【发布时间】:2014-04-20 16:10:52
【问题描述】:
我是 android 应用程序制作的新手,我仍然是一个有一点知识的初学者。我一直在尝试制作一个像画廊一样工作的 android 应用程序,但它只显示特定文件夹下的图像。对于 UI,我只从 GridView(或从后者派生的 TwoWayGridView)开始,并一直试图让 GridView 从此文件夹中获取其内容。
我已创建此文件夹并将图像复制到其中进行测试,但失败了。没有显示图像。另外我对Cursors 和ListAdapters 不是很熟悉。我确定正确的是活动的权限、清单和布局。此外,我相信我的问题在 URIs 附近。请检查我下面的代码:
一些命名:
Uri contentUri;
Cursor mImageCursor;
TwoWayGridView mImageGrid;
ListAdapter mAdapter;
String sdCard = Environment.getExternalStorageDirectory().getAbsolutePath();
onCreate 方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
File motherDirectory = new File(sdCard+"/Favory");
if(!motherDirectory.exists()){
motherDirectory.mkdir();
}
MediaScannerConnection.scanFile(this, new String[]{motherDirectory.getAbsolutePath()} ,null, new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
// TODO Auto-generated method stub
contentUri = uri ;
initGrid(uri);
}
});
}
initGrid(Uri) 方法:
private void initGrid(Uri folderUri) {
mImageCursor = this.getContentResolver().query(folderUri,
ImageThumbnailAdapter.IMAGE_PROJECTION, null, null,
MediaStore.Images.ImageColumns.DISPLAY_NAME);
mImageGrid = (TwoWayGridView) findViewById(R.id.gridview);
mAdapter = new ImageThumbnailAdapter(this, mImageCursor);
mImageGrid.setAdapter(mAdapter);
mImageGrid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(TwoWayAdapterView<?> parent, View v, int position, long id) {
Log.i(TAG, "showing image: " + mImageCursor.getString(ImageThumbnailAdapter.IMAGE_NAME_COLUMN));
Uri uri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
});
}
感谢您的帮助,如果有更简单的替代方法,请告诉我,我更关心结果而不是现在的方法。如果您需要任何信息或更多信息,请在下面的 cmets 中告诉我。再次感谢!
【问题讨论】:
标签: android image gridview uri listadapter