0
我有一个ListView
从数据库填充使用自定义ResourceCursorAdapter
与bindView
格式化每个列表项目。这些项目按照时间顺序显示,我需要突出第一个未来事件。不幸的是,我只知道这是我处理下一个条目并发现它是过去的第一个未来事件。我真正需要的是在bindView处理中“向前看”的能力,但这不在那里。更改显示的ListView中的项目的背景
唯一的选择(我能想到的)是处理所有项目,然后回去改变第一个未来事件的背景(然后我会知道)。
我正在使用的代码是
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"));
但是视图V始终为空,当我在查看声明断点运行在调试模式下,列表视图还没有呈现在屏幕。因此,我假设这就是为什么视图仍然为空。
我怎样才能得到changeView
ListView
项目需要在ListView
第一次显示时更改?
谢谢,但这只是部分工作。我有一个光标,其中有14条记录,其中8条在任何时候都显示在屏幕上。当我第一次运行应用程序时,正确的记录被突出显示(这正是我在getView中所做的),但是当我上下滚动突出显示的项目时,突然显示的内容有时最多会变为4个。 –
因此突出显示的视图得到回收?这是我所理解的。在这种情况下,你只需要把一个'else {}'放在那个'if'中,并为其余的项目设置正常的背景。 –
非常感谢。添加其他的东西可以解决问题。为了我的启发,你能解释一下bindview和getview之间的关系吗?对于通过光标位置的每一行,bindview是否调用getview作为位置? –