使用图像填充listview - viewbinder或customcursoradapter?如何?

时间:2012-06-04 06:13:40

标签: android android-listview simplecursoradapter android-viewbinder

我正在尝试使用图像填充列表视图,其URI从游标返回。

我不确定是否应该在我的simplecursoradapter中使用viewbinder,或者创建一个自定义的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 个答案:

答案 0 :(得分:0)

您可以使用自定义CursorAdpater。将您需要的参数传递给Custom类的构造函数。在newView中膨胀布局并在bindView中设置值。请参阅http://blog.cluepusher.dk/2009/11/16/creating-a-custom-cursoradapter-for-android/

答案 1 :(得分:0)

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;
    }

}