2015-05-08 191 views
0

我想更改列表视图中只有一个项目的文本颜色。更改列表视图中的指定项目的颜色android

此更改将由正在运行的asynctask的结果触发。

到目前为止,我在谷歌搜索和所有我发现是覆盖适配器的getView()函数,但这种方法是有点困难,因为我需要保持我想着色的行的id在全局变量将被getView()访问。

当事件发生时,是否有另一种方法来简单地设置项目的文本颜色从列表视图?

编辑

我创建的列表视图这样:

myListView = (ListView) findViewById(R.id.listView); 
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow); 
listAdapter.add("test"); 
myListView.setAdapter(listAdapter); 
+0

你如何创建你的ListView?如果通过创建SimpleCursorAdapter列表,您可以使用((TextView)视图)改变颜色.setTextColor(Color.RED); – Jacky

回答

0

对于为列表项目设置颜色绝对需要覆盖AdaptergetView()方法。这里是一个小例子,用于更新列表项的颜色而不使用项目的ID。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.simplerow) { 
       @Override 
       public View getView(int position, View convertView, ViewGroup parent) { 
        View view = super.getView(position, convertView, parent); 
        if (position % 2 == 0) { //Place the condition where you want to change the item color. 
         view.setBackgroundColor(Color.GRAY); 
        } else { 
         //Setting to default color. 
         view.setBackgroundColor(Color.WHITE); 
        } 
        return view; 
       } 
      }; 

在上面的例子中,所有的偶数位置列表项将在GREY颜色和其他人将WHITE颜色。如果不实施getView(),我们无法做到这一点。供参考Click Here

0

你可以设置自定义对象的可见颜色适配器然后更改颜色在这个接口并调用notifyDataSetChanged()

+0

我是新来的Android编程...不太明白你的答案。你说的意思是覆盖getView()。我想知道是否有另一种方式。 – user1934513

相关问题