我正在尝试根据特定条件更改一个(可能更多)ListView行。我已经阅读了很多关于类似问题和其他教程的答案,但我无法做任何事情。
我想要实现的是当SQLite中的行设置为特定值时,将行背景(更简单的版本)或行图片(我认为更难的版本)设置为与其他行不同。
我有扩展ListActivity的Activity,我正在设置ListView适配器:
private void refreshList() {
mySQLiteAdapter = new MyDBAdapter(this);
mySQLiteAdapter.open();
String[] columns = { MyDBAdapter.KEY_TITLE, MyDBAdapter.KEY_GENRE,
MyDBAdapter.KEY_PRICE, MyDBAdapter.KEY_ID };
Cursor contentRead = mySQLiteAdapter.getAllEntries(false, columns,
null, null, null, null, MyDBAdapter.KEY_TITLE, null);
SimpleCursorAdapter adapterCursor = new SimpleCursorAdapter(this,
R.layout.row, contentRead, columns, new int[] {
R.id.text1, R.id.detail });
this.setListAdapter(adapterCursor);
mySQLiteAdapter.close();
}
在onCreate方法和onResume中调用此函数。我想设置行的不同颜色/图像,其中列MyDBAdapter.KEY_PRICE
的值等于5. R.layout.row是我的带行设计的xml文件。
也许有人可以帮我这个?或至少显示描述它的教程?
答案 0 :(得分:3)
只需扩展SimpleCursorAdapter并覆盖bindView():
public class MyAdapter extends SimpleCursorAdapter {
public MyAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
super.bindView(view, context, cursor);
if(cursor.getLong(cursor.getColumnIndex(MyDBAdapter.KEY_PRICE)) == 5)
view.setBackgroundColor(0xff00ff00);
else // this will be the default background color: transparent
view.setBackgroundColor(0x00000000);
}
}
答案 1 :(得分:0)
您可以尝试创建在SimpleCursorAdapter上扩展的自定义适配器,在其中,在方法bindView上,您可以查看您查找的条件是否已完成并在该方法上实现所需的内容。
希望能提供帮助:)