在每个列表视图行上设置不同的颜色

gho*_*der 3 android listview

我已经看到了相关的答案,我不知道哪一个适合我.我有一个listView,每行都有一个textview.我想给出一些条件,每一行得到不同的颜色.(想象一下,我从数据库获取数据,并给出我得到的值,我希望文本设置为不同的颜色)我的代码如下所示:

public class TrailsConditionScreen extends ListActivity {
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        seeTrails();
    }
 private void seeTrails() {
    String[] help=new String[] {"foo","bar"};
    ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.row,R.id.text1,help);
    setListAdapter(adapter);
 }
Run Code Online (Sandbox Code Playgroud)

到目前为止,此代码只是将它们打印在列表中.

现在我想从db中检索值时,给定值,我会在每一行上设置不同的颜色.想象我的代码在读取第一行时从我想要的表中检索数据,给定数字在listview的第一行设置适当的颜色.然后转到第二个单独的数据库,为列表的第二行设置颜色,依此类推..我已经成功实现了数据库中的读数,但我不知道如何在特定行上设置颜色.在伪代码中它看起来像这样.

 for i=0 to number of lines in db{
   read_data();
   if key_value=0 then color_of_line(i)=red;
  else color_of_line_i)=green;
}
Run Code Online (Sandbox Code Playgroud)

对此有何帮助?

Rag*_*har 7

您必须创建自定义适配器来处理此问题,而不是使用ArrayAdapter.扩展ArrayAdapter并覆盖getView方法.而且内侧getView基于状态的方法,你可以改变文本的颜色在你的textView.setTextColor.

要编写自定义适配器,请在此处查看教程(6.教程:实现您自己的适配器).此示例不使用持有者模式,但您应该使用.