我正在尝试使用图像填充列表视图,其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。有人可以告诉我如何实现这个吗?
感谢您的帮助。
- 编辑 -
两个很棒的答案。谢谢你们两个。
答案 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;
}
}