RecyclerView onClick for multiple buttons and handling from Activity

后端 未结 5 681
深忆病人
深忆病人 2021-01-31 22:01

I\'m using RecyclerView with CardView and inside the CardView have 2 buttons. Now, have implemented the onClick events by imp

5条回答
  •  礼貌的吻别
    2021-01-31 22:47

    here is the best way to achieve that:--

    this is how i have implemented

    public class FollowersDetailsAdapter extends RecyclerView.Adapter {
    
        private List followersList;
        Context context;
        public FollowersDetailsAdapterListener onClickListener;
    
    
        public class MyViewHolder extends RecyclerView.ViewHolder {
            public TextView rv_tv_follower_name, rv_tv_follower_desig;
            public CircleImageView rv_iv_follower_image;
            RelativeLayout rv_rel_layout_followers, rel_layout_followers;
            LikeButton rv_iv_follower_icon;
    
            public MyViewHolder(View view) {
                super(view);
                rv_rel_layout_followers = (RelativeLayout) view.findViewById(R.id.rv_rel_layout_followers);
                rel_layout_followers = (RelativeLayout) view.findViewById(R.id.rel_layout_followers);
                rv_iv_follower_image = (CircleImageView) view.findViewById(R.id.rv_iv_follower_image);
                rv_tv_follower_name = (TextView) view.findViewById(R.id.rv_tv_follower_name);
                rv_tv_follower_desig = (TextView) view.findViewById(R.id.rv_tv_follower_desig);
                rv_iv_follower_icon = (LikeButton) view.findViewById(R.id.rv_iv_follower_icon);
                rel_layout_followers.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        onClickListener.iconTextViewOnClick(v, getAdapterPosition());
                    }
                });
            }
    
        }
    
        public FollowersDetailsAdapter(List FollowersList, FollowersDetailsAdapterListener listener) {
            this.followersList = FollowersList;
            this.onClickListener = listener;
    
        }
    
        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View itemView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.followers_list_row, parent, false);
    
            return new MyViewHolder(itemView);
        }
    
        @Override
        public void onBindViewHolder(final MyViewHolder holder, final int position) {
            if (followersList.get(position).getImage() != null && !followersList.get(position).getImage().trim().equalsIgnoreCase("")) {
                Picasso.with(context)
    
                        .load(followersList.get(position).getImage())
                        .resize(200, 200).into(holder.rv_iv_follower_image);
            }
    
            holder.rv_tv_follower_name.setText(followersList.get(position).getName());
            holder.rv_tv_follower_desig.setText(followersList.get(position).getDescription());
            if (followersList.get(holder.getAdapterPosition()).getID() == Integer.parseInt(ApplicationPreference.getUserId())) {
                holder.rv_iv_follower_icon.setVisibility(View.GONE);
            } else {
                holder.rv_iv_follower_icon.setVisibility(View.VISIBLE);
                if (followersList.get(position).getIsFollowing() == 0) {
                    holder.rv_iv_follower_icon.setLiked(false);
                } else if (followersList.get(position).getIsFollowing() == 1) {
                    holder.rv_iv_follower_icon.setLiked(true);
                }
    
    
            }
            holder.rv_iv_follower_icon.setOnLikeListener(new OnLikeListener() {
                @Override
                public void liked(LikeButton likeButton) {
    
                    onClickListener.iconImageViewOnClick(likeButton, position);
                }
    
                @Override
                public void unLiked(LikeButton likeButton) {
                    onClickListener.iconImageUnFollowOnClick(likeButton, position);
                }
            });
    
        }
    
        public interface FollowersDetailsAdapterListener {
    
            void iconTextViewOnClick(View v, int position);
    
            void iconImageViewOnClick(View v, int position);
    
            void iconImageUnFollowOnClick(View v, int position);
        }
    
        @Override
        public int getItemCount() {
            return followersList.size();
        }
    }
    

    and in your activity where you initialize the adapter--

     followersDetailsAdapter = new FollowersDetailsAdapter(followersList, new FollowersDetailsAdapter.FollowersDetailsAdapterListener() {
                @Override
                public void iconTextViewOnClick(View v, int position) {
                    gotoUserProfile(followersList.get(position).getID());
    
                }
    
                @Override
                public void iconImageViewOnClick(View v, int position) {
    
                    followUserProfile(followersList.get(position).getID(),1);
                }
    
                @Override
                public void iconImageUnFollowOnClick(View v, int position){
    
                    followUserProfile(followersList.get(position).getID(),0);
                }
            }); 
    

提交回复
热议问题