Как я могу узнать, какая кнопка нажата в моем CardView, если у меня есть динамический RecyclerView/CardView?
У меня есть два просмотра изображений в моем виде карты, теперь как я могу установить OnClickListeners, чтобы я мог знать, какая кнопка в каком виде карты выбрана. im1 и im2 - мои интерактивные изображения
Это мой код:
@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 ответа
Вы можете установить тег для представления. Тег может быть любым объектом.
holder.im2.setTag(position);
Вы также можете установить много тегов, с ключом, и ключ должен быть уникальным resId. Вы можете сбросить идентификаторы в ids.xml. Отослать это
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
}
});
вместо установки onClickListener внутри onBindViewHolder вы можете сделать это в самом классе ViewHolder
Вы также можете сделать это с помощью интерфейса. Для получения более подробной информации, пожалуйста, ознакомьтесь с этой ссылкой, содержащей краткую информацию о том, как обрабатывать событие клика с помощью интерфейса.