How can I select only one checkbox in Recyclerview and notifydataset changed

前端 未结 5 1150
没有蜡笔的小新
没有蜡笔的小新 2020-12-09 14:14

In my code I have create recyclerview with check box and default one item selected already. now I want when select other item checkbox so deselect all other items mean one i

5条回答
  •  南方客
    南方客 (楼主)
    2020-12-09 14:31

    public class MyTeamAdapter extends RecyclerView.Adapter { private Context context; private ArrayList myTeams;

    private int prevSelection = -1;
    
    
    public MyTeamAdapter(Context context, ArrayList myTeams) {
        this.context = context;
        this.myTeams = myTeams;
    }
    
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_my_team, parent, false));
    }
    
    
    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
        final Team team = myTeams.get(position);
        ViewHolder viewHolder = (ViewHolder) holder;
    
        if (team.isTeamSelected()) {
            viewHolder.checkTeam.setChecked(true);
            prevSelection = position;
        } else {
            viewHolder.checkTeam.setChecked(false);
        }
    
        viewHolder.checkTeam.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (b) {
                    team.setTeamSelected(true);
                    if (prevSelection >= 0) {
                        myTeams.get(prevSelection).setTeamSelected(false);
                        notifyItemChanged(prevSelection);
                    }
                    prevSelection = position;
                } else {
                    team.setTeamSelected(false);
                }
            }
        });
    }
    
    @Override
    public int getItemCount() {
        return myTeams.size();
    }
    
    public class ViewHolder extends RecyclerView.ViewHolder {
        RelativeLayout captainHolder, viceCaptainHolder;
        CheckBox checkTeam;
        TextView tvTeamName, tvCaptainName, tvCaptain, tvVCapName, tvVC, tvWcktKeeper, tvBatsMen, tvAllRounder, tvBowler;
        ImageView edtTeam, viewTeam, copyTeam;
    
    
        public ViewHolder(View itemView) {
            super(itemView);
            checkTeam = itemView.findViewById(R.id.cb_team);
    
            tvTeamName = itemView.findViewById(R.id.tv_team_name);
    
            captainHolder = itemView.findViewById(R.id.captain_holder);
            tvCaptainName = captainHolder.findViewById(R.id.tv_player_name);
            tvCaptain = captainHolder.findViewById(R.id.tv_player_type);
    
            viceCaptainHolder = itemView.findViewById(R.id.vc_holder);
            tvVCapName = viceCaptainHolder.findViewById(R.id.tv_player_name);
            tvVC = viceCaptainHolder.findViewById(R.id.tv_player_type);
    
            tvWcktKeeper = itemView.findViewById(R.id.tv_wckt_keeper);
            tvBatsMen = itemView.findViewById(R.id.tv_bats_men);
            tvAllRounder = itemView.findViewById(R.id.tv_all_rounder);
            tvBowler = itemView.findViewById(R.id.tv_baller);
    
            edtTeam = itemView.findViewById(R.id.edt_team);
            viewTeam = itemView.findViewById(R.id.view_team);
            copyTeam = itemView.findViewById(R.id.copy_team);
    
        }
    }
    

    }

提交回复
热议问题