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 }