Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:在CardView中的ImageView上添加clicklistener_Android_Android Recyclerview - Fatal编程技术网

Android:在CardView中的ImageView上添加clicklistener

Android:在CardView中的ImageView上添加clicklistener,android,android-recyclerview,Android,Android Recyclerview,在我的RecyclerView.Adapter上: @Override public void onBindViewHolder(WorkoutViewHolder viewHolder, int i) { .... viewHolder.mCreatorAvatar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {

在我的RecyclerView.Adapter上:

@Override
public void onBindViewHolder(WorkoutViewHolder viewHolder, int i) {
  ....
  viewHolder.mCreatorAvatar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(mContext, "AVATAR", Toast.LENGTH_SHORT).show();
        }
    });
在包含RecyclerView的片段父级上:

mRecyclerView.addOnItemTouchListener(
        new RecyclerItemClickListener(BrowseSessionsFragment.this.getActivity(),
                mRecyclerView, new RecyclerItemClickListener.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                // do whatever
                Toast.makeText(BrowseSessionsFragment.this.getActivity(), "ITEM" + position,
                        Toast.LENGTH_SHORT).show();
            }
问题是:当我单击ImageView时,有两条消息: 然后是阿凡达;在这种情况下,如何仅触发化身消息


谢谢大家

如果需要为RecyclerView创建McClickListener,则必须创建自己的接口,例如

public interface OnItemClick {
       void onItemClick(int position);
}
之后,只需在活动/片段中实现它,并将其设置为adapter。 在adapter set OnClickListener for element中,您需要在ViewHolder中使用它,并将列表项的位置指定给界面,例如

static class ViewHolder extends RecyclerView.ViewHolder {
ImageView mCreatorAvatar;

public ViewHolder(View itemView, final OnItemClick onItemClick) {
super(itemView);
//...some code...
mCreatorAvatar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               if(onItemClick != null){
                  onItemClick.onItemClick(getAdapterPosition());
               }
            }
       }
}
在实现接口的活动/片段中

public void onItemClick(int position) {
      //do smth
}

如果您想接收对完整列表项的单击,请以类似的方式再次单击ViewHolder中的itemView

删除addOnItemTouchListenerNot!因为我想防止卡被点击后进行处理。问题是相同的Viktor。@anthony您应该删除OnItemTouchListener并将OnItemClick设置为适配器中的itemView。实际上,我想允许:单击使用OnItemTouchListener完成的完整项目,只需单击avatar imageview即可。@anthony您可以通过两次单击来允许它:第一次单击ItemView,第二次单击avatar imageview