首页 > 解决方案 > Android - 如何从 recyclerview 中获取所有选中的复选框值并存储在 Firebase 中?

问题描述

因此,我试图获取所选复选框的所有值,Adapter class然后在我的主要活动中,当我单击一个按钮时,我希望将复选框数据上传到 Firebase 数据库中。我尝试了一些东西,但我不知道如何将其存储在 Firebase 中(我知道如何将数据存储在 Firebase 数据库中,但不知道复选框数据)。

这是适配器类的代码

public class GroupAdapter extends RecyclerView.Adapter<GroupAdapter.ViewHolder> {
    Context mContext;
    List<Users> mList;
    ArrayList<Users> lstChk= new ArrayList<Users>();

    public GroupAdapter(Context mContext, List<Users> mList) {
        this.mContext = mContext;
        this.mList = mList;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.display_group_contacts, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        Users users = mList.get(position);
        holder.name.setText(users.getUsername());
        holder.number.setText(users.getPhoneNumber());
        holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                if (isChecked){
                    users.setSelected(true);
                }else {
                    users.setSelected(false);
                }
            }
        });
        holder.checkBox.setSelected(users.getSelected());
        String url = users.getProfilephotoURL();
        if (url.equals(""))
            holder.circleImageView.setImageResource(R.drawable.ic_user);
        else
            Glide.with(mContext).load(url).into(holder.circleImageView);
    }

    @Override
    public int getItemCount() {
        return mList.size();
    }

    static class ViewHolder extends RecyclerView.ViewHolder {
        TextView name, number;
        CircleImageView circleImageView;
        CheckBox checkBox;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            name = itemView.findViewById(R.id.contactName);
            number = itemView.findViewById(R.id.contactNumber);
            circleImageView = itemView.findViewById(R.id.profilePic);
            checkBox = itemView.findViewById(R.id.checkbox);
        }
    }
}

在我的主要活动中,我参考了按钮和 Firebase 数据库。

所以,任何想法当我单击主要活动中的按钮时,如何获取选定的复选框并存储数据。

标签: androidcheckboxandroid-recyclerview

解决方案


在您的视图持有人中

private Checkbox checkbox;
...
checkbox = itemView.findViewById(R.id.checkbox_id);
...

现在,在上传按钮上单击使用,holder.checkbox.isChecked();

true如果选中则返回,否则返回false。然后,您可以将此布尔值上传到您的 Firebase。

编辑: 要在 Firebase 中上传,

在您的适配器中

private DatabaseReference databaseRef;

在适配器的构造函数中

databaseRef = FirebaseDatabase.getInstance().getReference("yourRefrence");

现在,最后在上传按钮上单击OnBindViewHolder

databaseRef.child("something").child(checkbox).setValue(holder.checkbox.isChecked());

推荐阅读