2016-05-06 10 views
0

Ich habe eine benutzerdefinierte Listenansicht mit Bild und Text, die in der Listenansicht mithilfe der Glide-Bildbibliothek korrekt geladen wird. Jetzt möchte ich einen OnItemClickListener in imageview implementieren, um das Bild in einer anderen Aktivität anzuzeigen.So verwenden Sie den OnItemClick-Listener, wenn die Glide/Picasso-Bildbibliothek verwendet wird

Adapter Code:

public class DescAdapter extends BaseAdapter { 

private final listdisplay ds; 
private ArrayList<descusers> dusers; 
private ArrayList<descusers> orig; 

public DescAdapter(listdisplay ds, ArrayList<descusers> dusers) { 
    this.ds = ds; 
    this.dusers = dusers; 
} 

@Override 
public int getCount() { 
    return dusers.size(); 
} 

@Override 
public Object getItem(int position) { 
    return dusers.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    descusers du = dusers.get(position); 
    String username = du.loginname; 
    String descCrip=du.descCrip; 
    String Limage = du.image; 
    long Ptime = du.Ptime; 

    Viewholder viewholder = null; 



    if(convertView==null) { 
     viewholder = new Viewholder(); 
     convertView = LayoutInflater.from(ds).inflate(R.layout.customlist, null); 
     viewholder.uname = (TextView) convertView.findViewById(R.id.username); 
     viewholder.desc = (TextView) convertView.findViewById(R.id.description); 
     viewholder.time = (TextView)convertView.findViewById(R.id.time); 

     viewholder.iview = (ImageView) convertView.findViewById(R.id.imageList); 


     convertView.setTag(viewholder); 
    }else { 

     viewholder = (Viewholder) convertView.getTag(); 
    } 

    viewholder.uname.setText(username); 
    viewholder.desc.setText(descCrip); 

     if (Limage.trim().isEmpty()) { 
      viewholder.iview.setVisibility(View.GONE); 
     } else { 
      Glide.with(convertView.getContext()).load(Limage) 
        .diskCacheStrategy(DiskCacheStrategy.ALL).fitCenter().centerCrop().into(viewholder.iview); 
      viewholder.iview.setVisibility(View.VISIBLE); 

     } 


    return convertView; 
} 

OnItemClick Code:

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

    final ImageView imageView = (ImageView) view.findViewById(R.id.imageList); 
    final BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable(); 
    final Bitmap yourBitmap = bitmapDrawable.getBitmap(); 
    Intent intent = new Intent(this, cust.class); 
    intent.putExtra("BitmapImage", yourBitmap); 

} 

receiveing ​​Absicht:

Intent intent = getIntent(); 
    Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage"); 
    imagedisplay = (ImageView)findViewById(R.id.imagedisplay); 
    imagedisplay.setImageBitmap(bitmap); 

Aber wenn ich auf das Bild unten Ausnahme gesehen klicken.

java.lang.ClassCastException: com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable kann nicht auf android.graphics.drawable.BitmapDrawable gegossen werden

Antwort

0
final BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable(); 

Ändern Sie diese BitmapDrawable Casting GlideBitmapDrawable.

final GlideBitmapDrawable bitmapDrawable = (GlideBitmapDrawable) imageView.getDrawable(); 

Ich hoffe, Picaso geben die Zeichen als GlideBitmapDrawable-Format.

+0

Ich änderte wie Sie Ihren Vorschlag, aber nach dem Klicken bewegt sich nicht zu einer anderen Aktivität. – user2269164

+0

Sie müssen die Aktivität mit der von Ihnen erstellten Absicht starten. – Srinivasan

0

versuchen diesen Code Pass Absicht in Ihrer Adapterklasse:

Intent i = new Intent(context, S.class); 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      i.putExtra("image",Limage); 

      context.startActivity(i); 

Absicht erhalten in Ihrem S.class

Intent i = getIntent(); 
String image = i.getStringExtra("image"); 
Picasso.with(this).load(image).into(img_meme);//imageview name 

hoffen, dass es stattdessen für u

0

arbeiten der Weitergabe Bitmap sollten Sie die Bild-URL übergeben und dann diese Bild-URL in Ihre Detailaktivität laden. Glide Griff caching von Bildern so wird es schnell geladen und es wird unnötige Bitmap-Objekte zu vermeiden.