我开发了一个应用程序,需要从sd卡中的特定文件夹中显示图像。我的代码可以正常工作,但它会显示sd卡中的所有图像。我已经按照以下帖子中的提到的方式提供了选择参数作为我的文件夹名字:
Displaying images from a specific folder on the SDCard using a gridview
但是它没有起作用。请建议我如何做到这一点:
下面是我发布的代码。
下面是我发布的代码。
public class Album1Activity extends Activity {
static Cursor imageCursor;
static int columnIndex;
GridView gridView;
Intent in;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.grid);
String[] imgColumnID = {MediaStore.Images.Thumbnails._ID};
Uri uri = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI;
imageCursor = managedQuery(uri, imgColumnID, null, null,
MediaStore.Images.Thumbnails.IMAGE_ID);
columnIndex = imageCursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
gridView = (GridView)findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(getApplicationContext()));
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
String[] dataLocation = {MediaStore.Images.Media.DATA};
//String []dataLocation = {Environment.getExternalStorageDirectory().getAbsolutePath()};
imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
dataLocation, null, null, null);
columnIndex = imageCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
imageCursor.moveToPosition(position);
String imgPath = imageCursor.getString(columnIndex);
in = new Intent(getApplicationContext(), FullScreen.class);
in.putExtra("id", imgPath);
startActivity(in);
}//onItemClickListener
});
}//onCreate
public static class ImageAdapter extends BaseAdapter{
private Context context;
//Album1Activity act = new Album1Activity();
public ImageAdapter(Context context){
this.context = context;
}//ImageAdapter
public int getCount() {
// TODO Auto-generated method stub
return imageCursor.getCount();
}//getCount
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}//getItem
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}//getItemId
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv;
if(convertView == null){
iv = new ImageView(context);
imageCursor.moveToPosition(position);
int imageID = imageCursor.getInt(columnIndex);
iv.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
"" +imageID));
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setPadding(5, 5, 5, 5);
iv.setLayoutParams(new GridView.LayoutParams(100, 100));
}//if
else{
iv = (ImageView)convertView;
}//else
return iv;
}//getView
}//ImageAdapter
}//Album1Activity
/diplomat
中的媒体文件,对吗?所以不能显示位于SD卡不同文件夹中的其他媒体文件,是吗? - Huy Tower