Заполнение списка с изображениями - видоискатель или пользовательский курс? Как?

Я пытаюсь заполнить представление списка изображениями, чей 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/

Другие вопросы по тегам