layout: post
title: "RecyclerView with Firebase"
date: 2021-08-18T14:25:52-05:00
author: sangyeop
categories: Android
RecyclerView with Firebase DB
파이어베이스에서 제공하는 메소드 중 addValueEventListener()를 사용
이 안에서 onDataChange() 메소드를 재정의한다
→ DataSnapShot을 통해 DB의 변화를 감지하고, 그에 따른 이벤트를 지정해 줄 수 있다.
TodoWriteActivtiy.class
⇒ onClick()메소드를 통해서 Todo의 내용을 DB에 추가한 뒤
DatabaseReference myRef;
myRef = database.getReference()
.child("Todos")
.child(groupKey)
.child((month+1)+"월")
.child(dayOfMonth+"일");
⇒ 다음 참조의 값 변화를 아래의 메소드에서 감지한다.
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
items.clear();
for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
Todo todo = dataSnapshot.getValue(Todo.class);
items.add(todo);
customAdapter.setItems(items);
}
customAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
Log.e("TodoWriteActivity: ", String.valueOf(error.toException()));
}
});
⇒ Todo todo = dataSnapshot.getValue(Todo.class)
즉 DB값의 변화를 바탕으로 어댑터를 갱신 시키는 것이다
push()로 넣은 난수 값 하위 항목 삭제하는법 ⇒ 참조 변수 선언시에 .push()를 포함시킨뒤, 참조변수에 getKey()를 하면 됨