gpt4 book ai didi

Android,使用 SimpleCursorAdapter 设置颜色而不仅仅是字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:26 24 4
gpt4 key购买 nike

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

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 的内容设置为 "Colour"的值,而是想将其背景颜色设置为该值。

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

最佳答案

查看 SimpleCursorAdapter.ViewBinder .

setViewValue基本上是您对 Cursor 中的数据做任何您想做的事情的机会,包括设置 View 的背景颜色。

例如,像这样的东西:

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

你手动做的有点多,但它或多或少是相同的想法。请注意,在所有这些示例中,您可以通过缓存列索引而不是通过字符串查找它们来节省性能。

关于Android,使用 SimpleCursorAdapter 设置颜色而不仅仅是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5573539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com