我正在从图库中选择多张图像,这使我在arraylist<Uri>.
中添加了多张uri图片
在我要在列表视图中查看uri
中的所有arraylist
个图像之后,我创建了一个自定义适配器类,该类将获取所有uri
并转换每个{{ 1}}到位图,它将在uri
中设置,这将列出图像,但它会提供空异常。
这是适配器类, 该课程存在于活动中
imageview
并单击UI中存在的特定徽标,我已在此处设置了适配器。
class CustomAdapter extends BaseAdapter{
@Override
public int getCount() {
return ImageCount;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = getLayoutInflater().inflate(R.layout.imagelist_layout,null);
ImageView imageview = (ImageView)findViewById(R.id.imageView);
try {
// getting null exception
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),mArrayUri.get(i));
imageview.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
return view;
}
答案 0 :(得分:0)
此行出错。
ImageView imageview = (ImageView)findViewById(R.id.imageView);
将其更改为
ImageView imageview = (ImageView) view.findViewById(R.id.imageView);
我强烈建议仅使用 ViewHolder Pattern 。修改您的课程。
class CustomAdapter extends BaseAdapter {
@Override
public int getCount() {
return ImageCount;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = getLayoutInflater().inflate(R.layout.imagelist_layout, null);
holder.imageview = (ImageView) view.findViewById(R.id.imageView);
view.setTag(holder);
}
else {
holder = (ViewHolder) view.getTag();
}
try {
// getting null exception
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),mArrayUri.get(i));
holder.imageview.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
return view;
}
class ViewHolder {
private ImageView imageview;
}
}