我有这个代码片段,它从数据库中获取了获取的KEY_COLOR,并将其放在R.id.text_color中以便在xml中附加..
KEY_COLOR等于atm“红色”和“蓝色”。 我不想要“红色”和“蓝色”我想要图像而是一个小点。
private void fillData() {
Cursor notesCursor = mDbHelper.fetchAllNotes();
startManagingCursor(notesCursor);
// Create an array to specify the fields we want to display in the list (only TITLE)
String[] from = new String[]{NotesDbAdapter.KEY_TITLE, NotesDbAdapter.KEY_COLOR};
// and an array of the fields we want to bind those fields to (in this case just text1)
int[] to = new int[]{R.id.text1, R.id.text_color};
// Now create a simple cursor adapter and set it to display
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this,
R.layout.notes_row, notesCursor, from, to);
setListAdapter(notes);
}
我只是想将NotesDbAdapter.KEY_COLOR的结果更改为R.drawable.red_dot或blue_dot ......但我不知道如何......
你知道吗? :/答案 0 :(得分:0)
来自SimpleCursorAdapter的文档:
绑定分两个阶段进行。首先,如果SimpleCursorAdapter.ViewBinder可用,则调用setViewValue(android.view.View,android.database.Cursor,int)。如果返回的值为true,则发生绑定。如果返回的值为false并且要绑定的视图是TextView,则调用setViewText(TextView,String)。 如果返回的值为false并且要绑定的视图是ImageView,则调用setViewImage(ImageView,String)。
来自SimpleCursorAdapter.setViewImage (ImageView v, String value)的文档:
默认情况下,该值将被视为图像资源。 如果该值不能用作图像资源,则该值将用作图像Uri。
所以基本上如果你这样做,你的数据库的KEY_COLOR
列包含Uri
到您的图片,并替换R.id.text_color
数组中的to
,其资源ID为一个ImageView,理论上你的SimpleCursorAdapter
会自动用ImageView
填充Uri
的图像。
从未尝试过,但似乎应该如何运作。
请参阅此示例,了解如何在列表行Fancy ListViews Part One中使用带有textview的图像。它是由Mark Murphy在CommonsWare上写的。它实际上使用了与我使用视图绑定器建议的方法不同的方法,并使用getView(...)
方法为每行设置图像和文本。
答案 1 :(得分:0)
使用您拥有的相同fillData。
但是,在将数据库插入数据库时,需要使用列名为NotesDbAdapter.KEY_COLOR的数据库中的drawables的URI。
对于下面的示例代码,将图像更改为您的drawable,如果它是蓝色或红色。
String nameToInsert = "android.resource://my.package.name/"+R.drawable.image;
当然,将my.package.name更改为正确的包名。
让R.id.text_color成为imageview的id而不是textview。