根据数据库值突出显示ListView行

时间:2012-09-30 04:05:35

标签: java android listview

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

0 个答案:

没有答案