【问题标题】:RecyclerView onClick is not working at allRecyclerView onClick 根本不工作
【发布时间】:2016-10-18 20:26:40
【问题描述】:

我正在尝试在我的RecyclerView 中设置一个onclick 方法。它在另一个项目上工作,但不是在这里。我在网上搜索但无法弄清楚。连吐司都没有冒出来。有人可以向我解释我在哪里犯了错误吗?

这是我的代码:

private Context mContext;
private MenuImages[] mMenuImages;

public MenuAdapter(Context context, MenuImages[] menuImages){
    mContext = context;
    mMenuImages = menuImages;
}

@Override
public MenuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.menu_list_item, parent, false);
    MenuViewHolder viewHolder = new MenuViewHolder(view);

    return viewHolder;
}

@Override
public void onBindViewHolder(MenuViewHolder holder, int position) {
    holder.bindMenu(mMenuImages[position]);
}

@Override
public int getItemCount() {
    return mMenuImages.length;
}

public class MenuViewHolder extends RecyclerView.ViewHolder
        implements View.OnClickListener{

    public ImageView mImageView;
    public TextView mTextView;

    public MenuViewHolder(View itemView) {
        super(itemView);

        mImageView = (ImageView) itemView.findViewById(R.id.itemImageView);
        mTextView  = (TextView) itemView.findViewById(R.id.textView2);

        itemView.setOnClickListener(this);
    }

    public void bindMenu(MenuImages menuImage){
            mImageView.setImageBitmap(menuImage.getImageMenu());
            mTextView.setText(menuImage.getTitleImageMenu());
    }

    @Override
    public void onClick(View v) {
        Toast.makeText(v.getContext(), getLayoutPosition(), Toast.LENGTH_LONG).show();
    }
}

【问题讨论】:

  • 你错过了 itemView.setClickable(true);
  • 感谢您的快速回答,但仍然无法正常工作,当我单击时,在我的监视器中我收到这些消息:W/ViewRootImpl:由于没有窗口焦点而取消事件:MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=481.59375, y[0]=620.4297, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount= 1, historySize=0, eventTime=72911, downTime=65936, deviceId=0, source=0x1002 }
  • 由于没有窗口焦点而取消事件 :: => .setFocusable(true); :)
  • 检查您的 R.layout.menu_list_item ,可以检查可在 xml 中单击以获取图像或文本,或者可能用于父视图...如果孩子可以单击,则整个单元格单击不起作用..我猜
  • 非常感谢,你太棒了。第一次发帖,对这个社区感到非常惊讶。对于那些可能有同样问题的人来说,这不是在 java 代码中设置可聚焦或可点击为真,而是在 xml 中。我在一个孩子身上检查过。

标签: android onclick android-recyclerview onclicklistener


【解决方案1】:

在我的情况下,我在其他类的 InterceptorCardView 中使用 RecyclerView,这阻止了 recyclerview 的 onClickListener, 当我用 CardView 改变它并且它工作得很好

注意:我删除了 clickable = "false" ,focusable = "false"。

【讨论】:

    【解决方案2】:

    可能已经晚了,但在您的布局 xml 文件中,您应该在您的情况下将属性 clickable = "false" 和 focusable = "false" 添加到子视图、textview 和 imageview 中

    【讨论】:

      猜你喜欢
      • 2016-06-05
      • 2023-03-10
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多