val database = Firebase.database //테스트 모드는 괄호를 빼준다.
val database = Firebase.database("https://....firebasedatabase.app")
val myRef = database.getReference("message")
myRef.setValue(binding.etInput.text.toString()) // 데이터 1개가 계속 수정되는 방식
myRef.push().setValue(binding.etInput.text.toString()) // 데이터가 계속 쌓이는 방식
실시간으로 앱 데이터를 읽기 위해 myRef 에 ValueEventListener 를 추가한다.
이 클래스의 onDataChange() 메서드는 데이터가 변경될 때마다 호출된다.
이 클래스의 onCancelled() 메서드는 데이터 읽기에 실패 시 호출된다.
myRef.addValueEventListener(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
val value = dataSnapshot.getValue<String>() // 클레스는 getValue(TestData::class.java) 이렇게 넣어준다.
Log.d(TAG, "Value is: $value")
}
override fun onCancelled(error: DatabaseError) {
Log.w(TAG, "Failed to read value.", error.toException())
}
})
fragment 에서는 this대신 viewLifecycleOwner를 사용해야 한다.
fun observerData(){
viewModel.fetchData().observe(viewLifecycleOwner, Observer {
mAdapter.setListData(it)
mAdapter.notifyDataSetChanged()
})
}