gpt4 book ai didi

android - 回收站 View : how to catch the onClick on an ImageView?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:55:06 26 4
gpt4 key购买 nike

我的 RecyclerView 的 CardView 中有一个 ImageView。我想捕捉 ImageView 上的 onClick,就像我已经对 ListView 所做的那样。因此,在 public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) 中,我尝试了:

 myViewHolder.imageView.setClickable(true);
myViewHolder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("TEST", "Clicked");
}

但这完全被忽略了。以下代码有效:

 myViewHolder.imageView.setImageResource(R.drawable.star_yellow);

我能做什么?

最佳答案

这是我在我的项目中所做的。

  1. 在项目的某处有一个接口(interface)类:

    public interface RecyclerViewClickListener {

    void onRowClicked(int position);
    void onViewClicked(View v, int position);
    }
  2. 在您的 RecyclerView.Adapter 类中,将此接口(interface)添加为字段并通过构造函数将其传递给适配器:

    public class YourRecAdapter extends RecyclerView.Adapter<YourRecAdapter.SimpleViewHolder>{

    private RecyclerViewClickListener listener;

    public YourRecAdapter(RecyclerViewClickListener listener){
    this.listener = listener;
    }

    public static class SimpleViewHolder extends RecyclerView.ViewHolder {

    public SimpleViewHolder(View itemView, final RecyclerViewClickListener listener) {
    super(itemView);

    // find view ids here

    itemView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    if(listener != null)
    listener.onRowClicked(getAdapterPosition());
    }
    });

    someViewholderView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    if(listener != null)
    listener.onViewClicked(v, getAdapterPosition());
    }
    });
    }
    }
    }
  3. 在您的 Activity/Fragment 中实现接口(interface):

    public class YourFragment extends Fragment implements RecyclerViewClickListener {

    @Override
    public void onViewClicked(View v, int position) {
    if(v.getId == R.id.yourDesiredView){
    // Do your stuff here
    }
    }

    @Override
    public void onRowClicked(int position) {
    // Clicked entire row
    }
    }

关于android - 回收站 View : how to catch the onClick on an ImageView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33264042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com