2

我需要根据从填充 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>
4

0 回答 0