1

如何像在本机 MESSAGING 应用程序中一样对 ListView 中的各个行进行颜色编码?我不想简单地做交替行,但我想复制 MESSAGING 应用程序中使用的格式,其中消息行根据消息的用户名具有不同的背景颜色。

仅供参考:我目前正在扩展SimpleAdapter并覆盖getView(int position, View convertView, ViewGroup parent)。在这种方法中,我试图根据位置计算设置背景颜色,并与每次更新列表时维护的“要突出显示的位置”列表进行比较,但到目前为止,这只是第一次工作列表已更新。

在覆盖 SimpleAdapter 的类中:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
  View view = super.getView(position, convertView, parent);  

  if(highlightPositions.contains(new Integer(position))){
      view.setBackgroundColor(highlightColor);        
  }
  else{
      view.setBackgroundColor(normalColor);      
  }   
  return view;
}

感谢您提供的任何指导!

4

2 回答 2

0

谢谢您的帮助。实际上,我列出的代码确实有效。这个问题原来是我跟踪要在 highlightPositions 列表中突出显示的列表位置的一个小错误。一旦我纠正了这一点,实际上 highlightPositions 列表确实包含要突出显示的正确位置,然后它就可以正常工作了。

于 2010-03-02T04:51:53.590 回答
0

我认为您需要在 ListAdapter 上调用notifyDataSetChanged()。这会强制刷新列表,调用您覆盖的 getView() 方法。

于 2010-03-01T04:49:51.580 回答