查看SimpleCursorAdapter.ViewBinder。
setViewValue基本上是你对你的数据做任何你想做的事情的机会Cursor
,包括设置你的视图的背景颜色。
例如,类似:
SimpleCursorAdapter.ViewBinder binder = new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
String name = cursor.getColumnName(columnIndex);
if ("Colour".equals(name)) {
int color = cursor.getInt(columnIndex);
view.setBackgroundColor(color);
return true;
}
return false;
}
}
datasource.setViewBinder(binder);
更新- 如果您使用的是自定义适配器(扩展CursorAdaptor
),那么代码不会发生很大变化。你会覆盖getView
和bindView
:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView != null) {
return convertView;
}
/* context is the outer activity or a context saved in the constructor */
return LayoutInflater.from(context).inflate(R.id.my_row);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
int color = cursor.getInt(cursor.getColumnIndex("Colour"));
view.setBackgroundColor(color);
String label = cursor.getString(cursor.getColumnIndex("GenreLabel"));
TextView text = (TextView) findViewById(R.id.genre_label);
text.setText(label);
}
你手动做的更多,但它或多或少是相同的想法。请注意,在所有这些示例中,您可以通过缓存列索引而不是通过字符串查找它们来节省性能。