如何使用 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