我在数据库中填充ListView
,使用自定义ResourceCursorAdapter
和bindView
来格式化每个列表项。这些项目按时间顺序显示,我需要高亮显示第一个未来事件。不幸的是,我只知道这是我处理下一个条目并发现它已经过去的第一个未来事件。我真正需要的是能够在bindView处理中“向前看”但不存在。
唯一的替代方案(我能想到的)是处理所有项目然后返回以更改第一个未来事件的背景(我当时知道)。
我正在使用的代码是
EventsAdapter db = new EventsAdapter(this);
db.open();
Cursor cursor = db.fetchAllRecords();
final MyAdapter listitems = new MyAdapter(this,R.layout.timeline_detail, cursor, 0);
timeline.setAdapter(listitems);
db.close();
View v = timeline.getChildAt(firstEvent); // firstevent is set in the bindView
v.setBackgroundColor(Color.parseColor("#ffd1d1"));
但是,View v始终为null,当我在调试模式下运行它并在View语句中使用断点时,列表视图尚未在屏幕上呈现。因此,我假设这就是为什么视图仍为空。
如何在首次显示changeView
时获取ListView
ListView
项目需要更改?
答案 0 :(得分:1)
尝试并扩展您的适配器并覆盖getView。
final MyAdapter listitems = new MyAdapter(this,R.layout.timeline_detail, cursor, 0){
public View getView(int position, View convertView, ViewGroup parent){
View v = super.getView(position, convertView, parent);
if (position==0){
//Do something to the first item (v)
}else{
//Revert what you did above, since views get recycled.
}
return v;
}
};
或者只是将它包含在MyAdapter类中。