Android 设置列表项的背景色
我有一个ListActivity,它在我的XML文件(android:id=“@android:id/android:list”)中将SimpleCursorAdapter设置为ListView。我在预填充的数据库中有五行。当活动开始时,我想将对应于带有_id3的数据库行的列表项视图的背景设置为蓝色。此项目可以出现在列表中的任何位置,因为用户可以添加、编辑和删除列表项目。(所以我不能依靠子节点编号索引。)如果该项目已被删除,那么我不想做任何事情 如何找到正确的视图 新增信息: 列表项是这样组织的(仅供参考,这是一个大纲,不是实际的XML代码):Android 设置列表项的背景色,android,android-layout,Android,Android Layout,我有一个ListActivity,它在我的XML文件(android:id=“@android:id/android:list”)中将SimpleCursorAdapter设置为ListView。我在预填充的数据库中有五行。当活动开始时,我想将对应于带有_id3的数据库行的列表项视图的背景设置为蓝色。此项目可以出现在列表中的任何位置,因为用户可以添加、编辑和删除列表项目。(所以我不能依靠子节点编号索引。)如果该项目已被删除,那么我不想做任何事情 如何找到正确的视图 新增信息: 列表项是这样组织的
这是我传递给SimpleCursorAdapter构造函数的布局文件的大纲。在适配器的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);
}
要扩展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);
}
}
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);
}
}