2016-10-26 4 views
0

My RecyclerViewCardViewで、CardViewGridViewとその他のTextViewsを含みます。ViewHolderの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); 

    ... 
} 

私はViewHolderOnClickListenerを設定するが、私はGridViewの内側をクリックすると、クリックイベントが解雇れることは決してありません。ここでOnClickListenerのためのコードは次のとおりです。助けを

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

感謝。

+0

をコードに続いて削除することができます「this.view =ビュー;」私はこのコードで問題が見つかりません。 –

+0

"view"は全体のビューホルダーを表します。ビューホールダー全体にonclickイベントを追加したいので、私は "ビュー"上にリスナーを設定します。私はそれを削除することはできません。 –

+0

このグリッドを試すgridView.setOnClickListener(new View.OnClickListener(){ @Override パブリックボイドonClick(ビュー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イベントを設定することで問題を回避できます。私は本当になぜ内部ビューグループが親のクリックイベントに応答しないのだろうかと思っています。 –

関連する問題