如果您只想在没有上下文的情况下查看问题,请跳到底部
我正在构建的 android 应用程序有一个包含三列的简单表:
_id INTEGER PRIMARY KEY...,名称TEXT,颜色INT
此表称为categories
。我从数据库中加载我的类别并将它们输入一个SimpleCursorAdapter
以供使用,Spinner
如下所示:
String[] from = new String[] {
ListDbAdapter.KEY_CATEGORY_NAME,
ListDbAdapter.KEY_CATEGORY_COLOR };
int[] to = new int[] { R.id.categorySpinnerItem };
mCategorySpinnerAdapter = new SimpleCursorAdapter(this,
R.layout.category_spinner_item, categoryCursor, from, to);
mCategorySpinnerAdapter
.setViewBinder(new CategorySpinnerViewBinder());
mCategorySpinner.setAdapter(mCategorySpinnerAdapter);
我设置了一个自定义ViewBinder
,因为我希望类别名称是微调项的文本,颜色是背景颜色。我的ViewBinder
样子是这样的:
private static final int NAME_COLUMN = 1;
private static final int COLOR_COLUMN = 2;
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
TextView textView = (TextView) view;
String name = cursor.getString(NAME_COLUMN);
int color = cursor.getInt(COLOR_COLUMN);
textView.setText(name);
textView.setBackgroundColor(color);
return true;
}
这是我的问题(最后)
在setViewValue方法中,columnIndex应该做什么?文档说“可以在光标中找到数据的列”但是当我通过setViewValue进行调试时,我点击了它三次,并且columnIndex始终为1
.
我期待调试器为 from 数组中的每个条目进入setViewValue一次,首先是 columnIndex 1
,然后是2
。或者可能对查询结果中的每一列执行一次。
上面的代码有效,我可以获得所需的功能,但这仅仅是因为我的 NAME_COLUMN 和 COLOR_COLUMN 常量。我真的很想听听对自定义 ViewBinders 更有经验的人对setViewValue及其参数的解释。