From da7fd6e5f7214cc707d8b5a7edb752101d7adb60 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Wed, 24 Jun 2015 11:08:29 +0200 Subject: [PATCH] Show last message in contacts list. --- app/src/main/res/layout/item_user.xml | 25 +++++++++++++++++ .../nutomic/ensichat/util/UsersAdapter.scala | 27 +++++++++++++++---- 2 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/layout/item_user.xml diff --git a/app/src/main/res/layout/item_user.xml b/app/src/main/res/layout/item_user.xml new file mode 100644 index 0000000..5fbdb46 --- /dev/null +++ b/app/src/main/res/layout/item_user.xml @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/app/src/main/scala/com/nutomic/ensichat/util/UsersAdapter.scala b/app/src/main/scala/com/nutomic/ensichat/util/UsersAdapter.scala index d1b0e1d..73d252d 100644 --- a/app/src/main/scala/com/nutomic/ensichat/util/UsersAdapter.scala +++ b/app/src/main/scala/com/nutomic/ensichat/util/UsersAdapter.scala @@ -1,21 +1,38 @@ package com.nutomic.ensichat.util import android.content.Context -import android.view.{View, ViewGroup} +import android.view.{LayoutInflater, View, ViewGroup} import android.widget.{ArrayAdapter, TextView} import com.nutomic.ensichat.bluetooth.Device import com.nutomic.ensichat.protocol.User +import com.nutomic.ensichat.protocol.body.Text +import com.nutomic.ensichat.R /** * Displays [[Device]]s in ListView. */ class UsersAdapter(context: Context) extends - ArrayAdapter[User](context, android.R.layout.simple_list_item_1) { + ArrayAdapter[User](context, 0) { + + private lazy val database = new Database(context) override def getView(position: Int, convertView: View, parent: ViewGroup): View = { - val view = super.getView(position, convertView, parent) - val title: TextView = view.findViewById(android.R.id.text1).asInstanceOf[TextView] - title.setText(getItem(position).name) + val view = + if (convertView == null) { + context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) + .asInstanceOf[LayoutInflater] + .inflate(R.layout.item_user, parent, false) + } else + convertView + val title = view.findViewById(android.R.id.text1).asInstanceOf[TextView] + val summary = view.findViewById(android.R.id.text2).asInstanceOf[TextView] + val item = getItem(position) + title.setText(item.name) + database.getMessages(item.address, 1) + .map(_.body) + .foreach { + case m: Text => summary.setText(m.text) + } view }