0

有一個自定義列表視圖,它顯示圖像和文本。我正在使用Glide圖像庫來加載圖像。所以,當我搜索圖像和文字顯示在列表視圖中,但在圖像加載之前,如果我點擊它,Java空指針異常是可見的。如何避免在圖像加載之前進行點擊或需要在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(); 

    } 
} 

我檢查,如果有則圖像網址提取使用滑翔裝載後的圖像,但異常,當我的圖像加載之前點擊。任何建議?

答案:

在適配器中創建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; 

} 
+0

顯示您的logcat –

+0

顯示java.lang.NullPointerException:試圖調用虛擬方法android.graphics.Bitmap com.bumptech.glide.load.resource.bitmap。 「空對象引用 – user2269164

+0

上的」GlideBitmapDrawable.getBitmap()「,因爲錯誤提示你對imageView1有空引用@ user2269164 – KDeogharkar

回答

0

嘗試使用此代碼對你的getView()

@Override public View getView(int position, View convertView, ViewGroup parent) { 
final T item = getItem(position); 
.... 
Glide.with(getContext()) 
    .load(UIUtils.getThumbnailImageUrl(item.images)) 
    .placeholder(R.drawable.default_thumbnail_picture) 
    .crossFade() 
    .listener(new RequestListener<String, GlideDrawable>() { 
     @Override 
     public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
      return false; 
     } 

     @Override 
     public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
      return false; 
     } 
    }) 
    .into(viewHolder.mExerciseImageView); 
return convertView; 
} 

這可能幫助你。

0

你可以檢查圖像是否是null或不。可能會有你正在使用的圖書館回調(我不知道)

final Bitmap yourBitmap = bitmapDrawable.getBitmap(); 
if(yourBitmap==null){ 
image.setEnabled(false); 
} 

所以你可以避免點擊,如果圖像未加載。 或者你可以在默認情況下setEnabled(false)當圖像加載使用setEnabled(true)

相關問題