0

在我的应用程序中,我从 SQlite 数据库中提取 3 个字符串来填充 ListView。在列表行中,我必须使用 TextViews 和 ImageView。

当前正确填充了两个 TextView(每行中的文本不同)。但是,我使用 ViewBinder 设置的 ImageView 并非如此。即,每一行中的图像都得到相同的颜色。我怎样才能解决这个问题?我需要扩展 SimpleCursorAdapter 吗?

String[] from = {DbHelper.NAME, DbHelper.COMMENT, DbHelper.COLOR};
String[] column = {DbHelper.C_ID, DbHelper.NAME, DbHelper.COMMENT, DbHelper.COLOR};
int[] to = {R.id.listitem_title, R.id.listitem_summary, R.id.listitem_color};

Cursor cursor = db.query(DbHelper.TABLE_NAME, column, null, null, null, null, null);

this.adapter = new SimpleCursorAdapter(getActivity(), R.layout.list_item_set, cursor, from, to);

adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
    if (view.getId() == R.id.listitem_color) {

        cursor.moveToFirst();
        String color = "#ffffff";
        while (cursor.moveToNext()) {
        color = cursor.getString(cursor.getColumnIndex(DbHelper.COLOR));
        }
        ((ImageView) view).setBackgroundColor(Color.parseColor(color));
            return true;
        }
        return false;
         }
    });

setListAdapter(adapter);
4

1 回答 1

1

即,每一行中的图像都得到相同的颜色。我怎样才能解决这个问题?

如果您要使用:

String color = "#ffffff";
while (cursor.moveToNext()) {
    color = cursor.getString(cursor.getColumnIndex(DbHelper.COLOR));
}

当您循环color遍历Cursor整个Cursor. 相反,您只想简单地colorCursor

String color = "#ffffff";
color = cursor.getString(cursor.getColumnIndex(DbHelper.COLOR));
于 2013-06-04T17:57:35.447 回答