我有一个与听众的recyclerview。我使用以下代码:
__EFMigrationsHistory
并且我的适配器XML是:
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
//just setting the textview etc
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Model_NewProg model_newProg = ListOfExo.get(position);
openDialog(model_newProg, position);
}
});
}
由于某种原因,如果我单击该单元格,则不会触发支架上的监听器。好吧,有时候,如果我瞄准textview的角落,它就会触发。但是似乎文本视图正在“阻塞”监听器...我必须尝试添加android:clickable = false; android:clickable = true; ,...不起作用
有人有想法吗?我每次都使用此代码,并且始终有效
答案 0 :(得分:0)
holder.itemView
必须更改为:holder.theIdOfTheElementYouWantToClick
答案 1 :(得分:0)
您需要在View.onClickListener
类中实现ViewHolder
,然后在constructure
中进行注册,有关更多详细信息,请参见this答案
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
public ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//do what you want
}
}
答案 2 :(得分:0)
将id
分配到您的 cardView 并在ViewHolder
类中进行获取,然后在ViewHolder类中对该ID执行onClick。例如,如果您的cardView id
是 cardView
class ViewHolder extends RecyclerView.ViewHolder {
public CardView rowCardView;
public ViewHolder(View itemView) {
super(itemView);
rowCardView = (CardView) itemView.findViewById(R.id.cardView);
rowCardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//add your code..
}
});
}}