Es gibt eine benutzerdefinierte Listenansicht, die Bild und Text anzeigt. Ich verwende die Glide-Bildbibliothek, um das Bild zu laden. Wenn ich also das Bild und den Text in der Listenansicht suche, aber bevor das Bild geladen wird, wenn ich darauf klicke, wird die Ausnahme Java Null Pointer angezeigt. Wie vermeidet man einen Klick, bevor das Laden des Bildes oder eine Änderung für den ItemClick-Listener erforderlich ist?Ausnahme beim Klicken auf Listenansicht vor dem Laden von Bildern
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();
}
}
ich Überprüfung mich, ob es Bild ist url dann das Bild nach dem Laden holen Glide verwenden, aber Ausnahme, wenn ich vor dem Bild lädt klicken. irgendein Vorschlag?
Antwort:
Erstellt OnClickListener in Adapter Display-Aktivität übergeben.
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();
}
});
Adapter Konstruktor:
private Activity listdisplay;
public DescAdapter(listdisplay ds, ArrayList<descusers> dusers,Activity listdisplay) {
this.ds = ds;
this.dusers = dusers;
this.listdisplay = listdisplay;
}
zeigen Sie Ihre logcat –
java.lang.NullPointerException: Versuch android.graphics.Bitmap com.bumptech.glide.load.resource.bitmap virtuelle Methode‘aufzurufen. GlideBitmapDrawable.getBitmap() 'auf einem Null-Objekt Referenz – user2269164
als Fehler schlug vor, Sie haben Null-Verweis auf Ihre imageView1 @ user2269164 – KDeogharkar