显示重复项目的回收站视图

时间:2020-05-04 06:14:35

标签: java android firebase android-recyclerview

enter image description here

从上图开始,当我单击任何项​​目的跟随按钮时,回收器视图将自动添加所有项目的更新值,如下图所示。 (在这里,我单击了UJjwal Pratap的关注按钮)

enter image description here

适配器

public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
        final UserDataModel userDataModel = userDataModelList.get(position);
        userName.setText(userDataModel.getUserName());
        userFollowers.setText(userDataModel.getUserFollowers() + " Followers");

        followUser.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(userDataModel.getUserID()).child("Followers")
                        .child(Objects.requireNonNull(FirebaseAuth.getInstance().getUid()));
                databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        if (dataSnapshot.exists() && Objects.requireNonNull(dataSnapshot.getValue()).toString().equals("1")) {
                            FirebaseDatabase.getInstance().getReference().child("Users").child(userDataModel.getUserID()).child("Followers")
                                    .child(Objects.requireNonNull(FirebaseAuth.getInstance().getUid())).removeValue();
                            FirebaseDatabase.getInstance().getReference().child("Users").child(FirebaseAuth.getInstance().getUid())
                                    .child("Following").child(userDataModel.getUserID()).removeValue();
                        } else {
                            FirebaseDatabase.getInstance().getReference().child("Users").child(userDataModel.getUserID()).child("Followers")
                                    .child(Objects.requireNonNull(FirebaseAuth.getInstance().getUid())).setValue("1");
                            FirebaseDatabase.getInstance().getReference().child("Users").child(FirebaseAuth.getInstance().getUid())
                                    .child("Following").child(userDataModel.getUserID()).setValue("1");
                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });
            }
        });
    }

片段

FirebaseDatabase.getInstance().getReference().child("Users").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
                    if (!Objects.equals(childSnapshot.getKey(), FirebaseAuth.getInstance().getUid())) {
                        final UserDataModel userDataModel = childSnapshot.getValue(UserDataModel.class);
                        assert userDataModel != null;
                        userDataModel.setUserFollowers(String.valueOf(childSnapshot.child("Followers").getChildrenCount()));
                        PeopleArrayList.add(userDataModel);
                    }
                }
                PeopleAdapter = new PeopleAdapter(PeopleArrayList);
                PeopleRecyclerView.setAdapter(PeopleAdapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

1 个答案:

答案 0 :(得分:0)

验证PeopleArrayList

然后在设置适配器之前使用peopleArrayList.clear

然后使用peopleAdapter.notifySetDataChanged();

谢谢!祝您编码愉快!