Android 使用Glide/Picasso图像库时如何使用McClick侦听器

Android 使用Glide/Picasso图像库时如何使用McClick侦听器,android,listview,onitemclicklistener,android-glide,Android,Listview,Onitemclicklistener,Android Glide,我有一个带有图像和文本的自定义listview,它通过使用Glide图像库在listview中正确加载。现在我想在imageview上实现一个McClickListener,以便在另一个活动中显示图像 适配器代码: public class DescAdapter extends BaseAdapter { private final listdisplay ds; private ArrayList<descusers> dusers; private ArrayList<

我有一个带有图像和文本的自定义listview,它通过使用Glide图像库在listview中正确加载。现在我想在imageview上实现一个McClickListener,以便在另一个活动中显示图像

适配器代码:

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;
}
但当我点击下面的图片时,会看到异常

java.lang.ClassCastException:com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable无法强制转换为android.graphics.drawable.BitmapDrawable

 final BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable();
将此BitmapDrawable转换更改为GlideBitmapDrawable

final GlideBitmapDrawable bitmapDrawable = (GlideBitmapDrawable ) imageView.getDrawable();
我希望Picaso提供可绘制为GlideBitmapDrawable的格式

将此BitmapDrawable转换更改为GlideBitmapDrawable

final GlideBitmapDrawable bitmapDrawable = (GlideBitmapDrawable ) imageView.getDrawable();
我希望Picaso提供可绘制为GlideBitmapDrawable的格式。

试试这段代码 在适配器类中传递意图:

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

            context.startActivity(i);
在你的S课上集中注意力

Intent i = getIntent();
String image = i.getStringExtra("image");
Picasso.with(this).load(image).into(img_meme);//imageview name
希望它能为你工作

试试这段代码 在适配器类中传递意图:

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

            context.startActivity(i);
在你的S课上集中注意力

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

希望它能在u

上运行,而不是传递
位图
您应该传递图像URL,然后在详细信息活动中加载该图像URL<代码>滑动处理图像的缓存,这样它将快速加载,避免不必要的位图对象混乱。

而不是传递
位图
您应该传递图像URL,然后在详细信息活动中加载该图像URL
Glide
handle
caching
图像,以便快速加载,避免不必要的位图对象混乱。

我根据您的建议进行了更改,但单击后不会移动到其他活动。我根据您的建议进行了更改,但单击后不会移动到其他活动。