2016-10-26 49 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事件來解決該問題。但我真的想知道爲什麼內部視圖組不響應其父母的單擊事件。 –