java - 每行具有不同数量 TextView 的 ListView

标签 java android baseadapter

我的应用程序中有聊天功能,我想对来自同一用户的连续消息进行分组,类似于下面的图片:

Mock-up

因此,我的 message_row.xml 带有一个 TextView 来显示一条消息的内容。我的消息模型有一个 ArrayList,其中包含来自同一用户的所有顺序消息。

我的CustomMessageAdapter.java看起来像这样:

if (inflater == null) {
    inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

// [...]

if (getItemViewType(position) == MINE) {
    convertView = inflater.inflate(R.layout.my_message_row, null);
} else {
    convertView = inflater.inflate(R.layout.message_row, null);
}

// [...]

TextView senderName = (TextView) convertView.findViewById(R.id.senderName);
TextView content = (TextView) convertView.findViewById(R.id.content);

senderName.setText(message.getSenderName());

//I want to do something like this:

for (int i = 0; i < message.getMessages().size(); i++) {
    // display a different TextView for each different message...
}

// [...]

return convertView;

我无法做的是为 messages arraylist 中的每个不同消息显示一个新的 TextView。

最佳答案

由于膨胀 View 类的成本很高并且更新它们也可能很昂贵,因此采取更简单的方法来解决这个问题是明智的。我建议简单地将字符串与换行符分隔符连接起来,并将整个字符串应用到消息中。

进一步的想法

如果您需要对文本的显示进行复杂的控制,请考虑使用 Spannable 在单个 TextView 内设置文本格式。

http://developer.android.com/reference/android/text/Spannable.html

如下所示:Is there any example about Spanned and Spannable text

spanbuffer = new TextView(context);
spanbuffer.setText(newText, TextView.BufferType.SPANNABLE);
Spannable s = (Spannable) spanbuffer.getText();
s.setSpan(new ForegroundColorSpan(Color.RED), 0, newText.length() - 1, 0);
this.append(s);

您可以通过这种方式控制多个文本属性。

关于java - 每行具有不同数量 TextView 的 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31733487/

相关文章:

android - 在 Android Studio 中运行我的项目时出现警告 :No JDK specified for module 'Myproject' .

java - Android Volley 空指针异常

Android ListView : Is it possible to add data to a few rows before-wards, 而 ListView 的其余部分是动态加载的吗?

java - 如何为RecyclerView设置BaseAdapter?

java - getView() 从未调用过 baseadapter getcount 已调用

java - 更改Java中的标准输出

java - Java集包含多个返回选项

java - 在已发布的 Tomcat 10 上运行 Vaadin 7/8 Web 应用程序是否存在任何已知的兼容性问题?

java - Spring Stomp SimpUserRegistry 匿名用户

android 10 在通知上搜索栏