Если я правильно понял ваш вопрос, одним из решений было бы включить ImageView в ваш макет, например:
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.history_list_item, cursor, new String[] { Tracks.SYMBOL,
Tracks._ID, Tracks.ACTIVITY },
new int[] { R.id.symbol, R.id.id, R.id.activity });
В приведенном выше коде Tracks.SYMBOL - это столбец таблицы с идентификатором ресурса.и R.id.symbol - это идентификатор вашего ImageView.Затем вам нужно будет реализовать интерфейс SimpleCursorAdapter.ViewBinder и установить свою реализацию в адаптер курсора.
Прежде чем мы увидим пример, нужно сделать одно соображение: столбец курсора Tracks.SYMBOL может иметь целыезначения, которые равны требуемым полям ресурса в классе R.drawable.Это не удобно, поскольку эти поля генерируются автоматически, поэтому мы не можем контролировать их значения.Одним из решений было бы сохранить строку с именем поля класса и использовать отражение для получения значений поля.
Вот пример ViewBinder, присоединенного к ранее определенному адаптеру:
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
boolean binded = false;
if (view instanceof ImageView) {
int resourceId R.drawable.default_img;
String image = cursor.getString(columnIndex).trim();
try {
resourceId = R.drawable.class.getField(image).getInt(null);
} catch (NoSuchFieldException e) {
}
((ImageView) view).setImageResource(resourceId);
binded = true;
}
return binded;
}
});
Одна из особенностей метода setViewValue заключается в том, что если он возвращает false, тогда SimpleCursorAdapter будет выполнять привязку, как обычно.Но если этот метод возвращает true, SimpleCursorAdapter считает выполненную работу и больше не пытается привязывать это поле.
Я только начинаю с программирования на Android.Я сделал что-то подобное в одном проекте, и он работал нормально.Я не знаю, есть ли более простой способ.
С уважением.