java - 如何使用 gridlayout 设置 OnClick android cardview 示例

标签 java android-studio android-recyclerview

我有一个 Android 项目来创建可单击的网格布局项。我对在哪里设置单击监听器以及代码的样子感到困惑。这是我的适配器代码程序:

public class MyAdapter extends RecyclerView.Adapter <FruitViewHolder> {

    private Context mContext;
    private List< FruitsData > mFruitList;

    MyAdapter(Context mContext, List< FruitsData > mFruitList) {
        this.mContext = mContext;
        this.mFruitList = mFruitList;
    }

    @Override
    public FruitViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item_row, parent, false);
        return new FruitViewHolder(mView);

    }

    @Override
    public void onBindViewHolder(final FruitViewHolder holder, int position) {
        holder.mImage.setImageResource(mFruitList.get(position).getFruitImage());
        holder.mTitle.setText(mFruitList.get(position).getFruitName());


    }

    @Override
    public int getItemCount() {
        return mFruitList.size();
    }
}

class FruitViewHolder extends RecyclerView.ViewHolder {

    ImageView mImage;
    TextView mTitle;

    FruitViewHolder(View itemView) {
        super(itemView);

        mImage = itemView.findViewById(R.id.ivImage);
        mTitle = itemView.findViewById(R.id.tvTitle);


    }
}

感谢您的关注..

最佳答案

基本上您必须执行以下步骤:

  1. 定义 ClickListener 接口(interface)

    public interface OnItemClickListener {
      void onItemClick(FruitsData item);
    }
    
  2. 将 ClickListener 传递给适配器的构造函数

    MyAdapter(Context mContext, List<FruitsData > mFruitList, OnItemClickListener listener) {
        this.mContext = mContext;
        this.mFruitList = mFruitList;
        this.listener = listener;
     }
    
  3. 然后为监听器创建一个setter

    public void setListener(OnItemClickListener listener) {
      this.listener=listener;
    }
    
    //and ease your constructor
    
  4. 为您的 viewHolder 设置一个 onClickListener 并调用您的监听器

    @Override
    public void onBindViewHolder(final FruitViewHolder holder, int position) {
        final FruitsData item = mFruitList.get(position);
        holder.mImage.setImageResource(item .getFruitImage());
        holder.mTitle.setText(item getFruitName());
        holder.setOnClickListener(new View.OnClickListener() {
            @Override public void onClick(View v) {
                listener.onItemClick(item);
            }
        });
    }
    

关于java - 如何使用 gridlayout 设置 OnClick android cardview 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53717948/

相关文章:

java - 边框影响组件位置java

android-studio - 适用于 Android 工作室的 Bluemix Cloudant gradle 包?

android - 当我使用自己的广告单元 ID 时,我的 AdMob 插页式广告代码出现错误

android - 如何使用 DiffUtil 更新 RecyclerView 适配器

java - RecyclerView 列表和下一个 Activity 的 Intent Android

java - 使用循环和字符串数组创建 JMenuBar 错误

java - 包装已检查 Java 异常的标准方法

java - Dropbox 身份验证

android - 如何修复 "Emulator: Warning: QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled ((null):0, (null))"

android - 关于点击问题的 Recyclerview 子项目