Search code examples
javaandroidfirebasefirebase-realtime-databaseremovechild

Delete the random generated child on Firebase Database Android


remove all random generated child with a button

I would like to use a button to remove all the child generated. Juz shown in the picture above, I wanna used a button to delete all the child generated in order to clean out the database. There are several method that I had tried before (e.g.: databasereference.setValue(null) ) but obviously it cant work. I am a newbie to Android Studio as well as Firebase Databse. I had tried some example but in seems does not work. I used a button with ID = deletebutton Here is my code. Thank You for helping` public class RealtimeData extends AppCompatActivity {

private DatabaseReference mDatebase;
private DatabaseReference mDatebase2;
private DatabaseReference mDatebase3;
private DatabaseReference mDatebase4;
private DatabaseReference mDatabase5;


private TextView mTempView;
private TextView mHumidView;
private TextView mTimeView;
private TextView mphView;


//method that I had tried
private FirebaseAuth.AuthStateListener mAuthListener;
private Button buttonDelete;
private DatabaseReference databasePost;
private FirebaseAuth mAuth;


WifiManager wifiManager;
TextView wifiStatusTextView;


Switch wifiSwitch;
@Override
protected void onCreate(Bundle savedInstanceState) {

    buildDialog(RealtimeData.this).show();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_realtime_data);
    Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar);
    setSupportActionBar(toolbar);

    //declare the deletebutton
    mAuth = FirebaseAuth.getInstance();
    buttonDelete = (Button) findViewById(R.id.deletebutton);




    //method that I tried



    mAuthListener = new FirebaseAuth.AuthStateListener(){
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){
            if (firebaseAuth.getCurrentUser() != null){
                databasePost = FirebaseDatabase.getInstance().getReference().child("Region 1").child("Parameter Reading");
            }
        }
    };

    buttonDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (mAuth.getCurrentUser() == null || databasePost == null)
                return;
            databasePost.setValue(null);            }
    });




    mDatebase = FirebaseDatabase.getInstance().getReference().child("Region 1").child("Parameter Reading");
    mTempView = (TextView) findViewById(R.id.tempvalue);

    mDatebase.addValueEventListener(new com.google.firebase.database.ValueEventListener() {
        @Override
        public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
            for (com.google.firebase.database.DataSnapshot datasnap: dataSnapshot.getChildren()){
                String temp = datasnap.child("airtemperature").getValue(String.class);
                if (Float.valueOf(temp) >= 24 && Float.valueOf(temp) <= 30) {
                    mTempView.setText("Air Temperature: " + temp + " *C" + " Normal");
                }
                else if (Float.valueOf(temp) < 24)
                {
                    mTempView.setText("Air Temperature: " + temp + " *C" + " Abnormal Low ");
                }

                else if (Float.valueOf(temp) > 30)
                {
                    mTempView.setText("Air Temperature: " + temp + " *C" + " Abnormal High ");
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            mTempView.setText("Air Temperature: Error");

        }
    });

    mDatebase2 = FirebaseDatabase.getInstance().getReference().child("Region 1").child("Parameter Reading");
    mHumidView = (TextView) findViewById(R.id.humidvalue);

    mDatebase2.addValueEventListener(new com.google.firebase.database.ValueEventListener() {
        @Override
        public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
            for (com.google.firebase.database.DataSnapshot datasnap: dataSnapshot.getChildren()){
                String humid = datasnap.child("humidity").getValue(String.class);

                if (Float.valueOf(humid) >= 70 && Float.valueOf(humid) <= 75) {
                    mHumidView.setText("Air Humidity: " + humid + " %RH" + " Normal");
                }
                else if (Float.valueOf(humid) < 70)
                {
                    mHumidView.setText("Air Humidity: " + humid + " %RH" + " Abnormal Low ");
                }

                else if (Float.valueOf(humid) > 75)
                {
                    mHumidView.setText("Air Humidity: " + humid + " %RH" + " Abnormal High ");
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            mHumidView.setText("Air Humidity: Error");
        }
    });

    mDatebase3 = FirebaseDatabase.getInstance().getReference().child("Region 1").child("Parameter Reading");
    mTimeView = (TextView) findViewById(R.id.timevalue);

    mDatebase3.addValueEventListener(new com.google.firebase.database.ValueEventListener() {
        @Override
        public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
            for (com.google.firebase.database.DataSnapshot datasnap: dataSnapshot.getChildren()){
                String time = datasnap.child("time").getValue(String.class);
                //String date = datasnap.child("date").getValue(String.class);
                mTimeView.setText("Time: " + time  );
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            mTimeView.setText("Time: Error");

        }
    });




    // I removed some of thing which are not important for understanding the problem

Solution

  • To delete:

    databasePost = FirebaseDatabase.getInstance().getReference().child("Region 1").child("Parameter Reading");
    
    buttonDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            databasePost.removeValue();   
       }         
    });