Firebase를 백엔드로 사용하고 있습니다. 나는 recyclerview를 사용하여 사용자 목록을 표시합니다. 지금은 달성했지만 지금은 JSON의 "카테고리"를 기반으로 일부 사용자 만 표시하려고합니다. Gridview없이 목록을 표시하면 Gridview에 목록을 표시하려고 할 때 제대로 작동합니다. 제거한 사용자 대신 빈 칸이 보입니다.데이터 바인딩을 사용하여 Recyclerview의 일부 항목을 제거하면 빈 공간이 표시됩니다.
아래 코드는 다음과 같습니다. 내 GridRecylerview
mFragmentChatsBinding.rvChats.setHasFixedSize(true);
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity(), 2);
mFragmentChatsBinding.rvChats.setLayoutManager(mLayoutManager);
내 JSON 응답
{"[email protected],com":{
"category":"admin",
"email":"[email protected],com",
"hasLoggedInWithPassword":false,
"name":"xxxx"},
"[email protected],com":{
"category":"user",
"email":"[email protected],com",
"hasLoggedInWithPassword":false,
"name":"yyy",}}
내 Recyclerview 코드
private void initializeFirebase() {
final Query refUsers = FirebaseDatabase.getInstance()
.getReference(ConstantsFirebase.FIREBASE_LOCATION_USERS);
refUsers.keepSynced(true);
mAdapter = new FirebaseRecyclerAdapter<User, ChatsItemHolder>(User.class, R.layout.adapter_item_chats,
ChatsItemHolder.class, refUsers) {
@Override
public ChatsItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
adapterItemChatsBinding = DataBindingUtil.inflate(LayoutInflater
.from(parent.getContext()), viewType, parent, false);
//adapterItemChatsBinding.tvUserName.setTypeface(Typefaces.get(getActivity(), Constants.FONT_ROBOT_REGULAR));
return new ChatsItemHolder(adapterItemChatsBinding);
}
@Override
protected void populateViewHolder(ChatsItemHolder viewHolder, User user, int position) {
if (user.getCategory().equals("admin")) {
viewHolder.setIsRecyclable(false); viewHolder.mAdapterItemChatsBinding.lnItemRow.removeAllViews(); viewHolder.mAdapterItemChatsBinding.lnItemRow.setPadding(0, 0, 0, 0);
} else {
viewHolder.bindUser(user, ChatsFragment.this);
}
mAdapter.notifyDataSetChanged();
}
내가
if (user.getCategory().equals("admin")) {
viewHolder.setIsRecyclable(false);
viewHolder.mAdapterItemChatsBinding.lnItemRow.removeAllViews(); viewHolder.mAdapterItemChatsBinding.lnItemRow.setPadding(0, 0, 0, 0);
} else {
viewHolder.bindUser(user, ChatsFragment.this);
}
인가 내가 원하는 사용자를 표시하지하려면 다음 코드를 사용하고 거기에 어떤 내기 그 방법으로는 recyclerview에서 일부 항목을 제거 할 수 있습니다. 그렇다면 무엇입니까? 아니요, gridrecyclerview를 사용할 때 빈 공간이 생기고 정상적인 recyclerview를 표시 할 때 잘 작동하는 이유는 무엇입니까?
필터는 어댑터에 설정하면됩니다. –
나는 FirebaseRecyclerAdapter를 사용하고 있습니다. – Stackover67
그러면 여러분의 요구 사항에 따라 쿼리를 만들 수 있다고 생각합니다. –