android - 从 uri 的 Arraylist 在列表视图中显示图像
问题描述
我正在从图库中选择多个图像,这为我提供了我添加的多个图像 uriarraylist<Uri>.
在获取所有uri
图像后,arraylist
我想在列表视图中查看它,我创建了一个自定义适配器类,它将获取所有uri
和 on将每个转换uri
为将设置的位图imageview
,这将列出图像,但它给出空异常。
这是适配器类,该类存在于活动中
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;
}
并单击 UI 中存在的特定徽标,我已在此处设置适配器。
viewimage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CustomAdapter customadapter = new CustomAdapter();
images_listview.setAdapter(customadapter);
}
});
解决方案
此行出错。
ImageView imageview = (ImageView)findViewById(R.id.imageView);
将其更改为,
ImageView imageview = (ImageView) view.findViewById(R.id.imageView);
我强烈建议仅使用ViewHolder 模式。修改你的类。
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;
}
}
推荐阅读
- linux - 在 Python 中检测控制台上按下的箭头键
- android - android thread.join() 没有按预期工作
- java - 这种反转链表的方法有问题吗
- c# - 如何在 MVP 项目中填充 DataGridView?
- javascript - ReactJS 中的 CSS - 媒体查询和分组选择器
- c - 括号平衡程序崩溃(c)
- reactjs - 反应本机 PanResponder
- types - 扣脚本方法定义=字符串
- php - 如何在 PHP Slim 3 路由组中使用 Response->withJson?
- swift - UICollectionView 第一个可重复使用的表格单元格未显示