我想创建一个截止日期的备注列表。如果到达截止日期,背景颜色应该更改。
我尝试管理ArrayAdapter中的项目,并将适配器绑定到listview活动的列表视图。
我找到了方法getChildCount()和getHeaderViewsCount(),但都返回0。
这是我尝试过的代码:
ListView lv = (ListView) findViewById(android.R.id.list);
lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStringList));
for (int i = lv.getFirstVisiblePosition(); i < lv.getChildCount(); i++) {
View v = lv.getChildAt(i);
Log.d("MyActivity", String.valueOf(v.getId()));
v.setBackgroundColor(Color.GREEN);
}
当getFirstVisiblePosition返回0并且getChildCount返回0时,将永远不会输入循环。
这些是访问列表视图的子元素的正确方法吗?
答案 0 :(得分:0)
您的背景颜色应该在适配器的getView方法中设置为一种颜色或另一种颜色,您应该只在适配器上调用notifyDataSetChanged来请求刷新元素。
答案 1 :(得分:0)
应为“自定义列表视图”,请参阅here
答案 2 :(得分:0)
使用自定义适配器,然后在getView中,您可以检查行内容并相应地调整颜色。
这是一个很好的教程: http://webdeveloperpadawan.blogspot.co.uk/2014/09/android-listview-with-differing-rows.html
答案 3 :(得分:0)
试试这个
v.setBackgroundResource(R.Color.GREEN);