我需要根据从填充ListView的数据集中提取的值突出显示ListView行。如下面的代码所示,我知道如何通过视图绑定器基于数据库值修改textview。有没有办法从视图绑定器更新行?据我所知,我只能更新视图绑定器中的文本字段,而不能更新父行属性。
我目前正在使用SimpleCursorAdapter,但怀疑我需要创建某种类型的自定义适配器。但是,一旦我在自定义适配器中,我无法访问db游标来读取字段以确定是否突出显示该行,是否可以?
只是为了澄清,我不是要在选中时突出显示该行;我知道该怎么做。我也不想突出显示一个textview - 我正在尝试突出显示整个listView行(或者至少是我的R.layout.stream XML文件中的LinearLayout。
我在数据库记录中有一个布尔值,表示是否要突出显示该行。感谢您提供任何意见!
以下是我主要活动的一部分:
cursor = db.query(DbHelper.TABLE, null, null, null, null, null, DbHelper.C_TIMESTAMP + " DESC", null);
startManagingCursor(cursor);
adapter = new SimpleCursorAdapter(this, R.layout.stream, cursor, FROM, TO);
adapter.setViewBinder(VIEW_BINDER);
listStream.setAdapter(adapter);
...
以下是视图活页夹的一部分:
static final ViewBinder VIEW_BINDER = new ViewBinder() {
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
if (view.getId() == R.id.textTimestamp) {
String postDate = cursor.getString(columnIndex);
((TextView) view).setText(tHandler.getRelativeLocalTime(view.getContext(),postDate));
return true;
...
活动XML布局文件的相关部分:
<ListView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/listStream"
android:background="@color/lightGreen"
android:layout_below="@+id/streamHeader">
</ListView>