채팅 목록을 표시하는 데 사용되는 FirebaseRecyclerAdapter
이 있습니다. 는 이제 모든 채팅을 표시하고 나는 그것이 "사용자"배열에 현재 중포 기지 사용자 ID를 포함하는 경우에만 채팅 보여주고 싶은 :FirebaseRecyclerAdapter의 데이터 필터링
mFirebaseDatabaseReference = FirebaseDatabase.getInstance().reference
val parser = SnapshotParser<ChatModel> { dataSnapshot ->
val chat = dataSnapshot.getValue(ChatModel::class.java)
if (chat != null) {
chat.id = dataSnapshot.key
}
chat
}
val chatsRef = mFirebaseDatabaseReference.child(ChatActivity.ROOMS_CHILD)
val options = FirebaseRecyclerOptions.Builder<ChatModel>()
.setQuery(chatsRef, parser)
.build()
mFirebaseAdapter = object : FirebaseRecyclerAdapter<ChatModel, ChatViewHolder>(options) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ChatViewHolder {
val inflater = LayoutInflater.from(parent.context)
val viewHolder = ChatViewHolder(inflater.inflate(R.layout.item_chat, parent, false))
return viewHolder
}
override fun onBindViewHolder(viewHolder: ChatViewHolder,
position: Int,
chatItem: ChatModel) {
}
}
나는이 방법 SnapshotParser 내부 데이터를 필터링하는 생각을했다을 :
val parser = SnapshotParser<ChatModel> { dataSnapshot ->
val chat = dataSnapshot.getValue(ChatModel::class.java)
if (chat != null && chat.users.contains(mFirebaseUser?.uid)){ // I want to add this condition
chat.id = dataSnapshot.key
chat
} else {
null
}
}
하지만이 중포 기지 클래스 중 하나에 NPE가 발생합니다. 현재 사용자가 채팅을 필터링하는 가장 좋은 방법은 무엇입니까?