我需要根据从填充 ListView 的数据集中提取的值突出显示 ListView 行。如下面的代码所示,我知道如何通过视图活页夹根据数据库值修改文本视图。有没有办法从视图活页夹更新行?据我所知,我只能从视图活页夹中更新文本字段,而不是父行属性。
我目前正在使用 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>