2016-10-26 33 views
0

我的RecyclerViewCardView而我的CardView包含一个GridView和一些其他TextViewsViewHolder上的onClick事件在GridView中起作用

public MyCardViewHolder(View view) { 
    super(view); 
    this.view=view; 
    gridView = (GridView) view.findViewById(R.id.gridView); 
    nickNameTextView =(TextView) view.findViewById(R.id.card_nickname_textView); 

    ... 
} 

我在ViewHolder设置OnClickListener但是当我点击里面GridView,单击事件永远不会被解雇。以下是OnClickListener的代码:

view.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     ... 
    }); 
} 

感谢您的帮助。

+0

你可以删除你的点击事件“this.view =图。”我在这个代码中找不到问题 –

+0

“视图”代表整个视图持有者。由于我想在整个视图持有者上添加一个onclick事件,因此我将侦听器设置为“视图”。所以我不能删除它。 –

+0

试试这个gridView.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ ... }); } –

回答

1

下面的代码,你可以很容易地进行与任何元素:)

public class HomeRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener { 


    private List<String> mItemList; 

    RecyclerView mRecyclerView; 

    Context context; 
    HomeItemViewHolder mHomeItemholder; 

    public HomeRecyclerAdapter(List<String> itemList) { 
     mItemList = itemList; 
    } 


    public class HomeItemViewHolder extends RecyclerView.ViewHolder { 

     ImageView mImage; 


     public HomeItemViewHolder(View parent) { 
      super(parent); 

      mImage = (ImageView) parent.findViewById(R.id.Image); 

     } 

    } 

    public HomeRecyclerAdapter(List<String> itemList, Context context, RecyclerView mRecyclerView) { 
     this.mItemList = itemList; 
     this.context = context; 
     this.mRecyclerView = mRecyclerView; 


    } 


    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     Context context = parent.getContext(); 

     final View view = LayoutInflater.from(context).inflate(R.layout.item_home, parent, false); 


     return new HomeItemViewHolder(view); 

    } 


    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) { 

     mHomeItemholder = (HomeItemholder) viewHolder;   


     mHomeItemholder.mImage.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       //Handle your code 
      } 
     }); 

    }  



    public int getBasicItemCount() { 
     return mItemList == null ? 0 : mItemList.size(); 
    } 


    @Override 
    public int getItemCount() { 
     return getBasicItemCount(); // header 

    } 


} 
+0

我可以通过在整个视图及其子网格视图上设置click事件来解决该问题。但我真的想知道为什么内部视图组不响应其父母的单击事件。 –