Заполнение списка с изображениями - видоискатель или пользовательский курс? Как?
Я пытаюсь заполнить представление списка изображениями, чей URI возвращается из курсора.
Я не уверен, стоит ли мне использовать видоискатель с моим simplecursoradapter, или создать собственный simplecursoradapter, который каким-то образом выполняет ту же работу, и я также не знаю, как реализовать ни один из этих параметров.
Мой адаптер имеет следующее:
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.albumitem, albumCursor, displayFields, displayViews);
String[] displayFields = new String[] { AudioColumns.ALBUM,
AudioColumns.ARTIST, AlbumColumns.NUMBER_OF_SONGS };
int[] displayViews = new int[] { R.id.albumTitle, R.id.artistTitle,
R.id.totalSongs};
Но я бы хотел добавить изображение в R.id.albumView.
Я могу получить изображение в обычном режиме (вне адаптера), извлекая AlbumColumns.ALBUM_ID из курсора, а затем используя следующий код:
currentAlbumId = idList.get(currentSongIndex);
currentAlbumIdLong = Integer.parseInt(currentAlbumId);
artworkUri = Uri.parse("content://media/external/audio/albumart");
currentSongUri = ContentUris.withAppendedId(artworkUri, currentAlbumIdLong);
albumArt.setImageURI(currentSongUri);
Моя проблема в том, что я не знаю, как выполнить аналогичную задачу внутри адаптера. Во всяком случае, мое лучшее предположение - использовать viewBinder. Может ли кто-нибудь показать мне, как это реализовать?
Спасибо за помощь.
--Редактировать--
Два отличных ответа. Спасибо вам обоим.
2 ответа
private class YourCustomAdatper extends CursorAdapter{
private final LayoutInflater mInflater;
public YourCustomAdatper(Context context, Cursor cursor) {
super(context, cursor, true);
mInflater = LayoutInflater.from(context);
}
@Override
public void bindView(View view, Context context, final Cursor cursor)
{
ImageView imageview=view.findViewById(yourImageview_id);
//do rest of task
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View view =mInflater.inflate(yourLayout, parent, false);
return view;
}
}
Вы можете использовать пользовательский CursorAdpater. Передайте необходимые аргументы в конструктор класса Custom. В newView надуйте макет и в bindView установите значения. См. http://blog.cluepusher.dk/2009/11/16/creating-a-custom-cursoradapter-for-android/