只有两个复选框可以选择用户,如何实现呢?

This is screenshot

我只希望从复选框列表中选择两个复选框................................. ................................................... ................................................... ................................................... ................................................... ............................................

下面是我的代码

 public class OfferItemsAdapter extends RecyclerView.Adapter<OfferItemsAdapter.ViewHolder> {
    private ArrayList<TasklistModel.Option> mDataset;
    String strFreeItem;

    OfferItemsAdapter(ArrayList<TasklistModel.Option> reviwsLists,String strFreeItem) {
        mDataset = reviwsLists;
        this.strFreeItem = strFreeItem;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
        View v = LayoutInflater.from(parent.getcontext())
                .inflate(R.layout.addon_list_cart_item,parent,false);

        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder,final int position) {
        holder.cbProduct.setText(mDataset.get(position).getItemName());
        holder.tvProductPrice.setVisibility(View.GONE);

        if (strFreeItem.equalsIgnoreCase("1")) {

            if (mDataset.get(position).isChecked()) {
                holder.cbProduct.setChecked(true);
                selectedItems.add(mDataset.get(position).getItemID());
            } else {
                holder.cbProduct.setChecked(false);
                selectedItems.remove(mDataset.get(position).getItemID());
            }

        }

        holder.cbProduct.setOnClicklistener(new View.OnClicklistener() {
            @Override
            public void onClick(View v) {

                if (strFreeItem.equalsIgnoreCase("1")) {

                    if (selectedItems.size() == 1 && selectedItems.contains(mDataset.get(position).getItemID())) {
                        mDataset.get(position).setChecked(false);
                    } else {
                        mDataset.get(position).setChecked(true);
                    }
                }

                notifyDataSetChanged();

                Log.e("selectedItems.toString()............",""+selectedItems.toString());
            }
        });

    }

    @Override
    public int getItemCount() {
        return mDataset == null ? 0 : mDataset.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        public View mainView;
        TextView tvProductPrice;
        CheckBox cbProduct;

        public ViewHolder(View v) {
            super(v);
            mainView = v;
            tvProductPrice = v.findViewById(R.id.tvProductPrice);
            cbProduct = v.findViewById(R.id.cbProduct);
        }
    }
}
lryup 回答:只有两个复选框可以选择用户,如何实现呢?

首先,您应该使用setOnCheckedChangeListener而不是setOnClickListener

并使用setOnCheckedChangeListener并在每次用户选中以下复选框时检查selectedItems的大小。

holder.cbProduct.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

       @Override
       public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
          if (isChecked){
              if(selectedItems.size()<2){
                  selectedItems.add(mDataset.get(position).getItemID());
                  mDataset.get(position).setChecked(true);
              }else{
                  holder.cbProduct.setChecked(false);
                // here you can show a toast or log that user can't select more than two items.
              }
          }else{
             selectedItems.remove(mDataset.get(position).getItemID());
             mDataset.get(position).setChecked(false);
          }
       }
   }
);    
本文链接:https://www.f2er.com/3167269.html

大家都在问