我希望使用MediaStore.Images.Media获取图库的存储图像,并使用Picasso库加载图像。我使用下面的代码完成了这个。但它既没有出现任何错误也没有在imageview中显示图像(列表视图中存在)。
Picasso.with(getActivity()).load(MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
.resize(300, 300).centerInside().into(holder.imageView);
任何人都请帮帮我....
答案 0 :(得分:3)
您需要在数据库中查询MediaStore中的图像uri。
例如,要从MediaStore获取第一个图像并加载它,您将执行
String[] projection = {
MediaStore.Images.Media._ID
};
// Create the cursor pointing to the SDCard
mCursor = getActivity().managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection, // Which columns to return
null, // Return all rows
null,
MediaStore.Images.Media.DATE_ADDED);
getActivity().startManagingCursor(mCursor);
// Get the column index of the Thumbnails Image ID
if (mCursor != null) {
columnIndex = mCursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
int size = mCursor.getCount();
// If size is 0, there are no images on the SD Card.
if (size == 0) {
return;
}
mCursor.moveToPosition(0);
int imageID = mCursor.getInt(columnIndex);
Uri imageUri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, String.valueOf(imageID));
Picasso.with(getActivity()).load(imageUri)
.resize(300, 300).centerInside().into(holder.imageView);
}
另外,因为这是一个数据库查询,您应该在AsyncTask中执行此操作,并将URI返回到postExecute并将其加载到Picasso中,因为在某些设备上DB读取速度可能会很慢。