设置列表项的背景颜色

时间:2011-10-10 22:45:21

标签: android android-layout

我有一个ListActivity,它将SimpleCursorAdapter设置为我的XML文件中的ListView(android:id =“@ android:id / android:list”)。我在预先填充的数据库中有五行。当活动开始时,我想设置与数据库行对应的列表项视图的背景,其中_id 3为蓝色。此项目可以出现在列表中的任何位置,因为用户可以添加,编辑和删除列表项目。 (所以我不能依赖于子节点编号的索引。)如果项目被删除,那么我不想做任何事情。

如何找到正确的视图?

添加信息: 列表项的组织方式如此(fyi,这是一个大纲,而不是实际的XML代码):

<LinearLayout>
    <TextView/>
    <TextView/>
</LinearLayout>

这是我传递给SimpleCursorAdapter构造函数的布局文件的大纲。

2 个答案:

答案 0 :(得分:1)

在适配器的bindView()方法中,可以确定行的_id并调用view.setBackgroundResource(R.drawable.my_blue_background); 看起来像这样

public void bindView(View view, Context ctx, Cursor cursor) {
    if(cursor.getInt(cursor.getColumnIndex("_id"))==3)
        view.setBackgroundResource(R.drawable.my_blue_background);
}

答案 1 :(得分:0)

要扩展JoeLallouz的答案,实际上视图的父级需要更改(仅一次),此外我们需要对列表项的布局有所了解。

public void bindView(View view, Context ctx, Cursor cursor) {
    if(view.getId() == R.id.known_view && cursor.getInt(cursor.getColumnIndex("_id"))==3) {
        // Works if view's parent is the root of the list item's layout
        ((View)view.getParent()).setBackgroundResource(R.drawable.my_blue_background);
    }
}