Android,使用SimpleCursorAdapter来设置颜色不仅仅是string

我有一个简单的游标适配器设置在我的应用程序列表中,如下所示:

private static final String fields[] = {"GenreLabel", "Colour", BaseColumns._ID}; datasource = new SimpleCursorAdapter(this, R.layout.row, data, fields, new int[]{R.id.genreBox, R.id.colourBox}); 

R.layout.row由两个TextView(genreBox和colourBox)组成。 而不是将TextView的内容设置为“Color”的值,我想将其背景颜色设置为该值。

我需要做什么才能做到这一点?

Related of "Android,使用SimpleCursorAdapter来设置颜色不仅仅是string"

看看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 ),那么代码不会改变很多。 你会重写getViewbindView

 @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); } 

你正在做更多的手动,但它或多或less都是一样的想法。 请注意,在所有这些示例中,您都可以通过caching列索引来保存性能,而不是通过string查找它们。

你在找什么需要一个自定义的游标适配器。 您可以inheritanceSimpleCursorAdapter 。 这基本上允许访问创build的视图(尽pipe您将自己创build它)。

有关完整示例,请参阅自定义CursorAdapters上的这篇博客文章 。 特别是,我认为你需要重写bindView