简体   繁体   English

使用Android Studio在Firebase中存储复选框值

[英]Store checkbox values in firebase using android studio

I am working on recommendation application I using firebase to store information about user.I have used checkboxes for health status information. 我正在使用Firebase来存储有关用户的信息的推荐应用程序。我已使用复选框来获取健康状态信息。 I want to save all the checkbox values I selected.but in my code if I check more then one checkbox it always save the last checkbox. 我想保存所有选择的复选框值。但是在我的代码中,如果选中多个复选框,则它总是保存最后一个复选框。

This is my code How can I fix it to store all checked values? 这是我的代码,如何修复它以存储所有检查的值?

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_signup);

   Toolbar toolbar =findViewById(R.id.toolbarotherpages);
    setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);


databaseUser = FirebaseDatabase.getInstance("https://bonappetit-808c5.firebaseio.com").getReference("users");
users = new ArrayList<>();

addusername= findViewById(R.id.editTextname);
addphone=findViewById(R.id.editTextphone2);
mFirstCheckBox=findViewById(R.id.cbox1);
mSecondCheckBox=findViewById(R.id.cbox2);
mThirdCheckBox=findViewById(R.id.cbox3);
addhealthstatus=findViewById(R.id.editTexthealthstatus);


btnsignup =findViewById(R.id.buttonsignup2);

btnsignup.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Signup dosignup = new Signup(); // this is the Asynctask
        dosignup.execute("");

       }
   });
 }

protected void onStart() {
super.onStart();
//attaching value event listener
databaseUser.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        //clearing the previous artist list
        users.clear();

        //iterating through all the nodes
        for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
            //getting artist
            users user = postSnapshot.getValue(users.class);
            //adding artist to the list
            users.add(user);
        }

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});
}

   public class Signup extends AsyncTask<String, String, String> {
  String z = "";
  Boolean isSuccess = false;
   String username = addusername.getText().toString();
    String phone = addphone.getText().toString();
    String healthstatus = addhealthstatus.getText().toString();

@Override
protected String doInBackground(String... params) {
    if (username.trim().equals("") || phone.trim().equals("")) {
        z += "Please fill in all fields";
     } else {
        int count = 0;
        for (users user2 : users) {
            if (user2.getPhonenumber().equals(phone)) {
                count = 1;
            }
        }
        if (count == 0) {
            try {

                if(mFirstCheckBox.isChecked()) {
                    users user = new users(username, phone,"Diabetes");
                    databaseUser.child(phone).setValue(user);
                    addusername.setText("");
                    addphone.setText("");
                    addhealthstatus.setText("");
                }

                if(mSecondCheckBox.isChecked()) {
                    users user = new users(username, phone, "pressure");
                    databaseUser.child(phone).setValue(user);
                    addusername.setText("");
                    addphone.setText("");
                    addhealthstatus.setText("");
                }

                if(mThirdCheckBox.isChecked()) {
                    users user = new users(username, phone, 
                        healthstatus);
                    databaseUser.child(phone).setValue(user);
                    addusername.setText("");
                    addphone.setText("");
                    addhealthstatus.setText("");
                }

                z = "Account created";
                isSuccess = true;
            }
            catch (Exception ex) {
                z = "Mobile number was used";
                isSuccess = false;
            }
        }
        }
        return z;
      }
     }  

To get the selected checked values you can use Switch case following code 要获得选定的检查值,您可以使用“ 切换大小写”以下代码

public void onCheckboxClicked(View view) {

    boolean checked = ((CheckBox) view).isChecked();

    switch(view.getId()) {
    case R.id.checkBox1:
         ....


    break;
    case R.id.checkBox2:
        ......

    break;

    case R.id.checkBox3:
        ......

        break;`

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM