如果我有一个动态的RecyclerView / CardView,我怎么知道在我的CardView中点击了哪个按钮?

时间:2018-03-14 12:10:00

标签: android android-layout android-recyclerview android-cardview

我在卡片视图中有两个图像视图,现在我如何设置setOnClickListeners以便我可以知道选择了哪个cardview的按钮。 im1和im2是我可点击的ImageViews

这是我的代码:

    @Override
public void onBindViewHolder(ViewHolder holder, int position) {
    ConnIfInfo dataModel = ifList.get(position);
    Log.d("Name", "if list name: "+dataModel.getName());
    holder.name.setText(dataModel.getName());
    holder.appName.setText(dataModel.getApp().toString());
    if(String.valueOf(dataModel.getPreferredModeMode().toString()) .equals( String.valueOf(ProjectionTypes.OperationMode.AOA_AA)))
    {
        holder.im1.setImageResource(R.drawable.auto1);
        holder.im2.setImageResource(R.drawable.carlife);
        holder.im1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    iPhoneProjectionManager.startApp(1,"Nexus 5");
                }  catch (RemoteException e) {
                    e.printStackTrace();
                }
            }
        });

        holder.im2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    iPhoneProjectionManager.startApp(2,"Nexus 6");
                }  catch (RemoteException e) {
                    e.printStackTrace();
                }

            }
        });

    }

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

2 个答案:

答案 0 :(得分:6)

您可以将标记设置为视图。标签可以是任何对象。

holder.im2.setTag(position);

您也可以使用密钥设置许多标签,并且密钥应该是唯一的resId。你可以在ids.xml中转储id。请参阅this

holder.im2.setTag(<res_id>, position);

您可以将标记设为

holder.im2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           v.getTag()
           //or if you set with key then
           v.getTag(<res_id>)
           // please check for null value
        }
    });

而不是在onBindViewHolder中设置onClickListener,你可以在ViewHolder类本身中做到这一点

答案 1 :(得分:1)

您也可以使用Interface执行此操作 有关详细信息,请查看This link,其中包含有关如何使用界面处理点击事件的简要说明。