【发布时间】:2016-05-12 08:47:09
【问题描述】:
有一个显示图像和文本的自定义列表视图。我正在使用 Glide 图像库来加载图像。因此,当我在列表视图中搜索图像和文本时,但在图像加载之前,如果我单击它,就会看到 Java Null Pointer 异常。如何避免在加载图像之前单击或需要对 itemclick 侦听器进行任何更改。
项目点击:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
descusers du = dusers.get(position);
final String Limage = du.image;
if (!Limage.isEmpty()) {
final ImageView imageView1 = (ImageView) view.findViewById(R.id.imageList);
final GlideBitmapDrawable bitmapDrawable = (GlideBitmapDrawable) imageView1.getDrawable();
final Bitmap yourBitmap = bitmapDrawable.getBitmap();
Dialog builder = new Dialog(this);
builder.requestWindowFeature(Window.FEATURE_NO_TITLE);
builder.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
//nothing;
}
});
ImageView imageView = new ImageView(this);
imageView.setImageBitmap(yourBitmap);
p=new PhotoViewAttacher(imageView);
builder.addContentView(imageView, new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
builder.show();
}
}
我正在检查是否有图像 url,然后在使用 Glide 加载后获取图像,但是当我在图像加载之前单击时出现异常。有什么建议吗?
答案:
在适配器传递显示活动中创建了 Onclicklistener。
viewholder.iview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Dialog builder = new Dialog(listdisplay);
builder.requestWindowFeature(Window.FEATURE_NO_TITLE);
builder.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
//nothing;
}
});
ImageView imageView = new ImageView(listdisplay);
final GlideBitmapDrawable bitmapDrawable = (GlideBitmapDrawable) finalViewholder.iview.getDrawable();
final Bitmap yourBitmap = bitmapDrawable.getBitmap();
imageView.setImageBitmap(yourBitmap);
p=new PhotoViewAttacher(imageView);
builder.addContentView(imageView, new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
builder.show();
}
});
适配器构造函数:
private Activity listdisplay;
public DescAdapter(listdisplay ds, ArrayList<descusers> dusers,Activity listdisplay) {
this.ds = ds;
this.dusers = dusers;
this.listdisplay = listdisplay;
}
【问题讨论】:
-
java.lang.NullPointerException: 尝试在空对象引用上调用虚拟方法 'android.graphics.Bitmap com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable.getBitmap()'跨度>
-
错误提示您对 imageView1 @user2269164 的引用为空
-
编辑您的消息并正确添加您的 logcat,没有人会阅读您的消息,其次,向我们展示您的布局。我们需要 0 和 1 而不是猜测。
-
您正在获取 NPE,因为您正在尝试读取实际上未下载或未下载的可绘制图像。
标签: android listview onitemclicklistener android-glide onitemclick