2013-07-29 131 views
0

我想以编程方式在特定位置更改listview(simple_list_item_2适配器)子项的颜色。 (这里例如具有= lv.getCount()的所有项目;)Android:从列表视图中按位置获取视图

ListView lv = getListView(); 
int a = lv.getCount(); 
for (int i = 0; i < a; i++) { 
      ((TextView) lv.getChildAt(i).findViewById(android.R.id.text1)).setTextColor(Color 
        .parseColor("#EEC900")); 
} 

getChildAt();并不总是为我工作。在列表项不在场景中的情况下,getChild不返回视图或其他东西.. 是否有更好的解决方案,而不是getChildAt?

回答

0

您将不得不在您的Adapter类中执行此操作。 Android缓存并重新循环列表视图中的视图以节省内存。所以没有你无法看到改变颜色的意见。

因此,举例来说,如果你有一个arrayAdapter,你会重写getView功能,并有运行你的检查:

@Override 
    public View getView(int position, View view, ViewGroup parent) { 
     // use "position" to determine which item you have. 
     // Then set the properties of "view" which is your list row. 

    }