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

Posted

技术标签:

【中文标题】如何使用 gridlayout 设置 OnClick android cardview 示例【英文标题】:How to set OnClick android cardview example with gridlayout 【发布时间】:2019-05-12 01:52:23 【问题描述】:

我有一个 android 项目来创建可以单击的网格布局项。我对设置 On Click 侦听器的位置以及代码的外观感到困惑。这是我的适配器代码程序:

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 接口

    public interface OnItemClickListener 
      void onItemClick(FruitsData item);
    
    

    将 ClickListener 传递给适配器的构造函数

    MyAdapter(Context mContext, List<FruitsData > mFruitList, OnItemClickListener listener) 
        this.mContext = mContext;
        this.mFruitList = mFruitList;
        this.listener = listener;
     
    

    然后为监听器创建一个setter

    public void setListener(OnItemClickListener listener) 
      this.listener=listener;
    
    
    //and ease your constructor
    

    为你的 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);
            
        );
    
    

【讨论】:

那我需要在MainActivity.java中添加一些代码吗? 你必须修改你的适配器的构造函数并定义一个接口。您可以将接口单独定义或定义为适配器的内部接口(我更喜欢第二种方法,但这取决于您)

以上是关于如何使用 gridlayout 设置 OnClick android cardview 示例的主要内容,如果未能解决你的问题,请参考以下文章

如何在QML中使用按钮,GroupBox,文本和ProgressBar设置基本的GridLayout

JAVA的gridlayout如何设置不填充满

GridLayout(网格布局)

请教:android gridlayout 如何设置列宽和行高?

2.2.5 GridLayout(网格布局)

GridLayout中如何设置一个按钮占两个位置,就像我截图的那样