이번 시간에는 Firebase Realtime Database에
등록된 사용자 정보를 삭제하는 방법을
알아보겠습니다.
이전 포스팅에 이어서 하기 때문에 먼저 보시고
오시면 됩니다.
2022.03.14 - [안드로이드] - [안드로이드] Firebase Realtime Database RecyclerView 사용자 수정하는 방법
Firebase Realtime Database 설정 부분은 아래 링크를
따라 하시면 됩니다.
2022.03.09 - [안드로이드] - [안드로이드] Firebase 시작하기 실시간 데이터베이스 Realtime Database (간단한 데이터 읽기, 쓰기) part1
- 추가 코드 -
DAOUser.java
//삭제
public Task<Void> remove(String key){
return databaseReference.child(key).removeValue();
}
- 전체 코드 -
public class DAOUser {
private DatabaseReference databaseReference;
DAOUser(){
FirebaseDatabase db = FirebaseDatabase.getInstance();
databaseReference = db.getReference(User.class.getSimpleName());
}
//등록
public Task<Void> add(User user){
return databaseReference.push().setValue(user);
}
//조회
public Query get(){
return databaseReference;
}
//수정
public Task<Void> update(String key, HashMap<String, Object> hashMap){
return databaseReference.child(key).updateChildren(hashMap);
}
//삭제
public Task<Void> remove(String key){
return databaseReference.child(key).removeValue();
}
}
build.gradle(Module:프로젝트명:app)
dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다.
implementation 'com.github.xabaras:RecyclerViewSwipeDecorator:1.4'
setting.gradle
repositories 괄호 안에 아래 코드를 넣어주시면 됩니다.
maven { url 'https://jitpack.io' }
등록한 라이브러리 recyclerview-swipedecorator를 통해서 recyclerView에 제스처 기능을 추가했습니다.
onSwiped: 제스처에 따른 기능 구현
onChildDraw: 제스처 그림 구현
- 추카 코드 -
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getBindingAdapterPosition();
switch(direction){
case ItemTouchHelper.LEFT:
String key = list.get(position).getUser_key();
DAOUser dao = new DAOUser();
dao.remove(key).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void unused) {
Toast.makeText(ListActivity.this, "삭제 성공", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(ListActivity.this, "삭제 실패:" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
@Override
public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
new RecyclerViewSwipeDecorator.Builder(c, recyclerView, viewHolder,
dX, dY, actionState, isCurrentlyActive)
.addSwipeLeftBackgroundColor(Color.RED)
.addSwipeLeftActionIcon(R.drawable.ic_delete)
.addSwipeLeftLabel("삭제")
.setSwipeLeftLabelColor(Color.WHITE)
.create()
.decorate();
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
}).attachToRecyclerView(recyclerView);
- 전체 코드 -
public class ListActivity extends AppCompatActivity {
RecyclerView recyclerView;
UserAdapter adapter;
//데이터 베이스 객체
DAOUser dao;
//키 변수
String key = "";
ArrayList<User> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
recyclerView = findViewById(R.id.rv);
recyclerView.setHasFixedSize(true);
//화면 설정
LinearLayoutManager manager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(manager);
//어뎁터 설정
adapter = new UserAdapter(this, list);
//리싸이클러뷰 어뎁터 설정
recyclerView.setAdapter(adapter);
//데이터베이스 초기화
dao = new DAOUser();
//데이터 가져오기
loadData();
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getBindingAdapterPosition();
switch(direction){
case ItemTouchHelper.LEFT:
String key = list.get(position).getUser_key();
DAOUser dao = new DAOUser();
dao.remove(key).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void unused) {
Toast.makeText(ListActivity.this, "삭제 성공", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(ListActivity.this, "삭제 실패:" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
@Override
public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
new RecyclerViewSwipeDecorator.Builder(c, recyclerView, viewHolder,
dX, dY, actionState, isCurrentlyActive)
.addSwipeLeftBackgroundColor(Color.RED)
.addSwipeLeftActionIcon(R.drawable.ic_delete)
.addSwipeLeftLabel("삭제")
.setSwipeLeftLabelColor(Color.WHITE)
.create()
.decorate();
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
}).attachToRecyclerView(recyclerView);
}
private void loadData() {
dao.get().addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
list.clear();
for(DataSnapshot data : snapshot.getChildren()){
User user = data.getValue(User.class);
//키 값 가져오기
key = data.getKey();
//키 값 담기
user.setUser_key(key);
//리스트에 담기
list.add(user);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
아이콘 res - > drawable
2022.03.02 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 - 조회
2022.03.03 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part2 - 등록
2022.03.04 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part3 - 상세
[안드로이드] Firebase Storage 이미지 리스트 part2 (0) | 2022.03.17 |
---|---|
[안드로이드] Firebase Storage 이미지 업로드 part1 (2) | 2022.03.16 |
[안드로이드] Firebase Realtime Database RecyclerView 사용자 수정하는 방법 (0) | 2022.03.14 |
[안드로이드] Firebase Realtime Database RecyclerView 사용자 리스트 보는 방법 (2) | 2022.03.13 |
[안드로이드] Firebase Realtime Database RecyclerView 사용자 등록하는 방법 (0) | 2022.03.12 |
댓글 영역