Android SD卡目录中图像的Gridview
我想在sdcard目录的gridview中显示图像。我使用此代码。但当我按类型加载图像时:bitmap.getView在gridview适配器中需要整数[]数组。如何修复它Android SD卡目录中图像的Gridview,android,gridview,android-sdcard,Android,Gridview,Android Sdcard,我想在sdcard目录的gridview中显示图像。我使用此代码。但当我按类型加载图像时:bitmap.getView在gridview适配器中需要整数[]数组。如何修复它 public class LoadPic extends Activity { Integer[] imageIDs = { R.drawable.user, R.drawable.user, R.drawable.user, R.drawable.user,
public class LoadPic extends Activity {
Integer[] imageIDs = {
R.drawable.user,
R.drawable.user,
R.drawable.user,
R.drawable.user,
R.drawable.user,
R.drawable.user,
R.drawable.user
};
int numberOfImages=0;
Bitmap[] m;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.load_pic);
Intent gett = getIntent();
String _area = gett.getStringExtra("area");
String _domain = gett.getStringExtra("domain");
String _block = gett.getStringExtra("block");
String _melk = gett.getStringExtra("melk");
String _build = gett.getStringExtra("build");
String _apar = gett.getStringExtra("apar");
String _senfi = gett.getStringExtra("senfi");
File dir = new File(Environment.getExternalStorageDirectory()
+ "/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi);
File[] files = dir.listFiles();
numberOfImages=files.length;
for (int i=1;i<=numberOfImages;i++)
{
File img = new File("/sdcard/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi+"/pic"+i+".png");
if(img.exists())
{
Bitmap bit = BitmapFactory.decodeFile(img.getAbsolutePath());
}
}
GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(this));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent,
View v, int position, long id) {
Toast.makeText(getBaseContext(),
"pic" + (position + 1) + " selected",
Toast.LENGTH_SHORT).show();
}
});
}
public class ImageAdapter extends BaseAdapter
{
private Context context;
public ImageAdapter(Context c)
{
context = c;
}
//---returns the number of images---
public int getCount() {
return numberOfImages;
}
//---returns the ID of an item---
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
//---returns an ImageView view---
public View getView(int position, View convertView, ViewGroup parent)
{
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(185, 185));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(7, 7, 7, 7);
} else {
imageView = (ImageView) convertView;
}
/**/
imageView.setImageResource(imageIDs[position]);
/**/
return imageView;
}
}
public类LoadPic扩展活动{
整数[]图像ID={
R.drawable.user,
R.drawable.user,
R.drawable.user,
R.drawable.user,
R.drawable.user,
R.drawable.user,
R.drawable.user
};
int numberOfImages=0;
位图[]m;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.load_pic);
Intent gett=getIntent();
字符串_area=gett.getStringExtra(“区域”);
字符串_domain=gett.getStringExtra(“域”);
字符串_block=gett.getStringExtra(“块”);
字符串_melk=gett.getStringExtra(“melk”);
String _build=gett.getStringExtra(“build”);
字符串_apar=gett.getStringExtra(“apar”);
字符串_senfi=gett.getStringExtra(“senfi”);
File dir=新文件(Environment.getExternalStorageDirectory()
+“/momayezi/”+area+“-”+domain+“-”+block+“-”+melk+“-”+build+“-”+apar+“-”+senfi);
File[]files=dir.listFiles();
numberOfImages=files.length;
对于(int i=1;i替换
public int getCount() {
return numberOfImages;
}
与
首先,正确解释要设置什么可绘制的或位图
如果Bitmap
,则这是设置位图的方式(制作位图列表,然后):
如果可提取
则(列出可提取id)
以下是创建位图列表的方法:
ArrayList<Bitmap> bitmaps = new ArrayList<Bitmap>();
File dir = new File(Environment.getExternalStorageDirectory()
+ "/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi);
File[] files = dir.listFiles();
numberOfImages=files.length;
for (int i=1;i<=numberOfImages;i++)
{
File f = new File("/sdcard/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi+"/pic"+i+".png");
Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath());
if(bmp!=null){
bitmaps.add(bmp);
}
}
ArrayList位图=新建ArrayList();
File dir=新文件(Environment.getExternalStorageDirectory()
+“/momayezi/”+area+“-”+domain+“-”+block+“-”+melk+“-”+build+“-”+apar+“-”+senfi);
File[]files=dir.listFiles();
numberOfImages=files.length;
对于(int i=1;i如果您希望将SD卡中的图像显示到网格视图中,请使用任何imageloader库
通用图像加载器
然后需要创建一个字符串数组或模型类,而不是整数数组。
请参考以下教程
否。我想更改此代码。这不起作用。我想从SD卡加载图像。但因为我是通过文件img加载图像的…我不知道我是否会将imageview.setImageResource(imageID)与imageview.setImageBitmap()一起重放@MahshidFallah搜索堆栈溢出,查找从存储器读取图像的代码,如果有任何错误,post itBitmap.but应用程序有错误。由于我在物理设备中运行它,当它有错误时,我不知道什么是errorimageView.setImageResource(ImageId[position]);这是可绘制的代码。位图列表在哪里?
imageView.setImageBitmap(bitmaps[position]);
imageview.setImageResource(drawables[position]);
ArrayList<Bitmap> bitmaps = new ArrayList<Bitmap>();
File dir = new File(Environment.getExternalStorageDirectory()
+ "/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi);
File[] files = dir.listFiles();
numberOfImages=files.length;
for (int i=1;i<=numberOfImages;i++)
{
File f = new File("/sdcard/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi+"/pic"+i+".png");
Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath());
if(bmp!=null){
bitmaps.add(bmp);
}
}