0

我正在尝试用图像填充列表视图,其 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。有人可以告诉我如何实现这个吗?

感谢您的帮助。

- 编辑 -

两个很好的答案。谢谢你俩。

4

2 回答 2

0

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

于 2012-06-04T06:25:38.187 回答
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;
    }

}
于 2012-06-04T06:31:16.330 回答