未触发Click侦听器的回收视图持有人

时间:2019-06-19 13:30:36

标签: android android-recyclerview listener

我有一个与听众的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; ,...不起作用

有人有想法吗?我每次都使用此代码,并且始终有效

3 个答案:

答案 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..
            }
        });

    }}