如何通过SimpleCursorAdapter设置背景颜色

问题描述 投票:0回答:1

这是我的代码:

private void fillData() {
        Cursor notesCursor = mDbHelper.fetchAllNotes();
        startManagingCursor(notesCursor);

        String[] from = new String[]{NotesDbAdapter.KEY_TITLE, NotesDbAdapter.KEY_COLOR};

        int[] to = new int[]{R.id.text1, R.id.text2};

        SimpleCursorAdapter notes = new SimpleCursorAdapter(
              this, R.layout.note_row, notesCursor, from, to);
        setListAdapter(notes);
        }

其中产生以下ListView:http://i.stack.imgur.com/7W1xa.jpg

我想要的是为我的ListView的每个不同的行取“R.id.text2”值(这是一个十六进制颜色)并将其设置为自身的文本颜色。

结果应如下所示:http://i.stack.imgur.com/wrXt8.jpg

那可能吗?谢谢。

android listview simplecursoradapter
1个回答
0
投票

是的,这是可能的。创建自己的游标适配器MyCursorAdapter,扩展SimpleCursorAdapter,然后覆盖newViewbindView方法。

public class MyCursorAdapter extends SimpleCursorAdapter {
public MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
    super(context, layout, c, from, to);
}

public MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
    super(context, layout, c, from, to, flags);
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
    super.bindView(view, context, cursor);
    TextView textView = (TextView) view.findViewById(R.id.text2);
    String color = cursor.getString(cursor.getColumnIndex(NotesDbAdapter.KEY_COLOR));
    textView.setBackgroundColor(Color.parseColor(color));
}

}
© www.soinside.com 2019 - 2024. All rights reserved.