这个问题之前已经被问过,但我找不到答案,如果这是一个重复的问题,我很抱歉。但我的 gridView 只是重复我传递给它的最后一个图像。
这是我的 onActivityResult,我从手机图库中选择最多六张图像
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK)
{
if(requestCode == PICK_IMAGE_MULTIPLE)
{
ArrayList<Bitmap> items = new ArrayList<Bitmap>();
String[] imagesPath = data.getStringExtra("data").split("\\|");
try
{
lnrImages.removeAllViews();
}
catch (Throwable e)
{
e.printStackTrace();
}
for (int i=0; i<imagesPath.length; i++)
{
yourbitmap = BitmapFactory.decodeFile(imagesPath[i]);
items.add(yourbitmap);
}
adapter = new ImageAdapter(this, R.id.grdImages, items);
gridView.setAdapter(adapter);
}
}
}
这是我的图像适配器
public class ImageAdapter extends ArrayAdapter<Bitmap>
{
Bitmap bm;
private Context context;
private ArrayList<Bitmap> items;
public ImageAdapter(Context context, int textViewResourceId, ArrayList<Bitmap> items) {
super(context, textViewResourceId, items);
this.context = context;
this.items = items;
}
@Override
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(5, 5, 5, 5);
}
else
{
imageView = (ImageView) convertView;
}
for (int i = 0; i < items.size(); i++)
{
bm = items.get(i);
imageView.setImageBitmap(bm);
return imageView;
}
return imageView;
}
}
感谢您的任何反馈,作为一名正在接受培训的程序员,我们非常感激。
最佳答案
删除此 block ...
for (int i = 0; i < items.size(); i++) {
bm = items.get(i);
imageView.setImageBitmap(bm);
return imageView;
}
并添加这个
imageView.setImageBitmap(items.get(position));
关于java - GridView 重复一张图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44297639/