0

イメージとテキストを表示するカスタムリストビューがあります。私はイメージを読み込むためにGlideイメージライブラリを使用しています。だから私は画像を検索すると、リストビューのテキストが表示されますが、それをクリックすると画像がロードされる前に、Java Null Pointerの例外が表示されます。 itemclickリスナで画像を読み込む前にクリックをしたり、変更を加える必要はありません。画像がロードされる前にリストビューをクリックすると例外が発生する

によって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がある場合は、その後グライドを使用してロードした後に画像を取り込むチェックするが、例外います。なにか提案を?

回答:表示アクティビティを渡すアダプタで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

をロードすることにより たりすることができますsetEnabled(false)はあなたのlogcat –

+0

のjava.lang.NullPointerExceptionを表示:「android.graphics.Bitmap com.bumptech.glide.load.resource.bitmap仮想メソッドを呼び出すようにしようとします。 GlideBitmapDrawable.getBitmap() 'をヌルオブジェクトリファレンスでエラー – user2269164

+0

と入力するとエラーが発生しました。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; 
} 

この5月はあなたを助けます。

0

画像がnullかどうかを確認できます。あなたが使用しているライブラリーにコールバックされますがあるかもしれないイメージがロードされていない場合

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

はそうあなたがクリックを避けることができます(私はよく分かりません)。デフォルトとするとき、画像が使用setEnabled(true)

関連する問題