【发布时间】: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