2016-05-06 2 views
0

У меня есть пользовательское listview с изображением и текстом, и оно правильно загружено в listview с помощью библиотеки изображений Glide. Теперь я хочу реализовать OnItemClickListener на изображении, чтобы показать изображение в другом действии.Как использовать OnItemClick прослушиватель, когда используется библиотека изображений Glide/Picasso

код адаптера:

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:

@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 ​​Цель:

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

Но когда я нажимаю на изображении ниже исключения видно.

java.lang.ClassCastException: com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable не может быть приведен к android.graphics.drawable.BitmapDrawable

ответ

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

Изменить этот BitmapDrawable отливка GlideBitmapDrawable.

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

Я надеюсь, что Picaso предоставит выталкиваемый формат GlideBitmapDrawable.

+0

Я изменил согласно вашему предложению, но после нажатия на него не переходит в другую активность. – user2269164

+0

вам нужно начать работу с намерением, которую вы создали .. – Srinivasan

0

попробовать этот код пасс намерения в классе адаптера:

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

      context.startActivity(i); 

получить намерение в вашем S.class

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

надеюсь, что он будет работать для и

0

Вместо передачи Bitmap вам следует передать URL-адрес изображения, а затем загрузить этот URL-адрес изображения в свою детальную активность. Glide ручка caching изображений, поэтому он будет быстро загружаться, и это позволит избежать ненужных растровых объектов беспорядка.

Смежные вопросы