android - 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 数据库。
所以,任何想法当我单击主要活动中的按钮时,如何获取选定的复选框并存储数据。
解决方案
在您的视图持有人中
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());
推荐阅读
- php - 在请求验证laravel中重命名属性项数组
- postgresql - 将 PostreSQL 列更改为 GENERATED ALWAYS 列
- amazon-web-services - 如何设置 lambda 仅由 Cognito 用户组 (aws-sam) 调用
- android - Flutter Android 应用程序“无法实例化活动”
- python - 使用两个嵌套的 for 循环和 str() 函数将列表中的偶数相加
- facebook-prophet - 未来日期在 FBProphet - make_future_dataframe 方法中计算不正确
- r - 在频率表上运行统计数据,就好像它是 R 中的完整数据集一样
- jestjs - NestJS/TypeORM 单元测试:无法解析 JwtService 的依赖关系
- python - 如何在 Linux 上将 pip 安装到 PATH?
- ffmpeg - FFMPEG:通过 ffmpeg 中的 ZeroMQ 控制覆盖