shixiong fan
shixiong fan

Reputation: 1

onClick event on ViewHolder does work inside GridView

My RecyclerView has a CardView and my CardView contains one GridView and some other TextViews.

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);

    ...
}   

I set a OnClickListener on the ViewHolder but when I click inside GridView, the click event never gets fired. Here is the code for the OnClickListener:

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

Thanks for the help.

Upvotes: 0

Views: 178

Answers (1)

udayatom
udayatom

Reputation: 126

Following code you can easily proceed your click events with any element :)

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

    } 


}

Upvotes: 1

Related Questions