从上图开始,当我单击任何项目的跟随按钮时,回收器视图将自动添加所有项目的更新值,如下图所示。 (在这里,我单击了UJjwal Pratap的关注按钮)
适配器
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) {
}
});
答案 0 :(得分:0)
验证PeopleArrayList
然后在设置适配器之前使用peopleArrayList.clear
然后使用peopleAdapter.notifySetDataChanged();
谢谢!祝您编码愉快!