[Android] 안드로이드 파이어베이스 데이터 삭제하기
모바일앱을 개발하다가 파이어베이스에 올린 데이터를 삭제하는 기능이 필요하게 돼서 알아보았다.
삭제하기 전 파이어베이스에 데이터가 두개가 있는 것을 볼 수 있다.
먼저 uidList를 선언해준다.
private List<String> uidList = new ArrayList<>();
그리고 OnDataChange에 uidList.clear()를 추가하여 데이터가 쌓이지 않도록 clear해준다.
그 후 uidKey에 Key값을 받아온 후 uidList.add(uidKey)를 선언해준다.
mDatabase.getReference().child(the_uid).child("PetAccount").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
petAccountList.clear();
uidList.clear();
for(DataSnapshot ds : dataSnapshot.getChildren())
{
PetAccount petAccount = ds.getValue(PetAccount.class);
String uidKey = ds.getKey();
petAccountList.add(petAccount);
uidList.add(uidKey);
}
petdataAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
그렇다면 이제 본격적으로 삭제버튼 클릭 시 데이터를 삭제하도록 해보겠다.
btn_petprofiledelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mDatabase.getReference().child(the_uid).child("PetAccount").child(uidList.get(position)).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(PetProfileFix.this, "삭제 성공", Toast.LENGTH_SHORT).show();
finish();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
System.out.println("error: "+e.getMessage());
Toast.makeText(PetProfileFix.this, "삭제 실패", Toast.LENGTH_SHORT).show();
}
});
}
});
데이터베이스에서 삭제할 데이터가 있는 장소로 접근한뒤 uidList.get(position)으로 삭제할 데이터를 지정해주고 removeValue()를 이용해 삭제를 해주면 끝이다.
버튼을 이용하여 데이터를 삭제했더니 정상적으로 데이터가 삭제된 것을 볼 수 있다.
이처럼 파이어베이스의 uidlist로 position을 받아와서 삭제하고 싶은 데이터를 삭제하는 법을 알아봤다.