如何通过 SimpleCursorAdapter 设置背景颜色
How to set background color through SimpleCursorAdapter
这是我的代码:
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
我想要的是获取 "R.id.text2" 值(十六进制颜色)并将其设置为自身的文本颜色,用于我的 ListView 的每一行。
结果应如下所示:http://i.stack.imgur.com/wrXt8.jpg
这可能吗?谢谢
是的,这是可能的。创建您自己的扩展 SimpleCursorAdapter
的游标适配器 MyCursorAdapter
,然后覆盖 newView
或 bindView
方法。
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));
}
}
无需创建新的 class。请参阅此代码。
@Override
public boolean setViewValue(View view, Cursor c, int columnIndex) {
if(columnIndex == c.getColumnIndexOrThrow(NotesDbAdapter.KEY_COLOR)) {
TextView tv = (TextView)view;
tv.setColor(Color.RED);
}
}
这是我的代码:
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
我想要的是获取 "R.id.text2" 值(十六进制颜色)并将其设置为自身的文本颜色,用于我的 ListView 的每一行。
结果应如下所示:http://i.stack.imgur.com/wrXt8.jpg
这可能吗?谢谢
是的,这是可能的。创建您自己的扩展 SimpleCursorAdapter
的游标适配器 MyCursorAdapter
,然后覆盖 newView
或 bindView
方法。
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));
}
}
无需创建新的 class。请参阅此代码。
@Override
public boolean setViewValue(View view, Cursor c, int columnIndex) {
if(columnIndex == c.getColumnIndexOrThrow(NotesDbAdapter.KEY_COLOR)) {
TextView tv = (TextView)view;
tv.setColor(Color.RED);
}
}