gpt4 book ai didi

android - 使用数据绑定(bind)删除 Recyclerview 中的某些项目显示空白

转载 作者:行者123 更新时间:2023-11-29 01:05:09 25 4
gpt4 key购买 nike

我使用 Firebase 作为我的后端。我正在使用 recyclerview 来显示用户列表。我已经做到了,但现在我只想根据 JSON 中的“类别”显示一些用户。当我在没有 gridview 的情况下显示列表时,当我尝试在 gridview 中显示列表时它工作正常我看到空白代替我删除的用户。

下面是代码。我的 GridRecylerview

  mFragmentChatsBinding.rvChats.setHasFixedSize(true);
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity(), 2);

mFragmentChatsBinding.rvChats.setLayoutManager(mLayoutManager);

我的 JSON 响应

    {"xxxxx@gmail,com":{
"category":"admin",
"email":"xxxx@gmail,com",
"hasLoggedInWithPassword":false,
"name":"xxxx"},
"yyyy@gmail,com":{
"category":"user",
"email":"yyyy@gmail,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 时却能正常工作?

最佳答案

不是删除 View ,而是从列表中删除项目并设置

adapter.notifyDataSetChanged();

关于android - 使用数据绑定(bind)删除 Recyclerview 中的某些项目显示空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47807510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com