【发布时间】:2021-01-03 17:55:07
【问题描述】:
我使用RecyclerView 搜索用户。
搜索工作正常,但ItemView 中的关注按钮却不行。
每当我按下关注按钮时,按钮上的文字应该从“关注”变为“关注”。并且当我再次按下它时,它应该从“跟随”变为“跟随”。它工作得很好,但突然停止工作了!
每当我按下按钮时,它会从“关注”变为“关注”一秒钟,然后返回“关注”。想不通原因!
这是我的代码。
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
final User user = mUsers.get(position);
isFollowing(user.getId(), holder.btn_follow);
holder.btn_follow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (holder.btn_follow.getText().toString().equals("follow"))
{
FirebaseDatabase.getInstance().getReference().child("Follow").child(firebaseUser.getUid())
.child("following").child(user.getId()).setValue(true);
FirebaseDatabase.getInstance().getReference().child("Follow").child(user.getId())
.child("followers").child(firebaseUser.getUid()).setValue(true);
addNotifications(user.getId());
}
else
{
FirebaseDatabase.getInstance().getReference().child("Follow").child(firebaseUser.getUid())
.child("following").child(user.getId()).removeValue();
FirebaseDatabase.getInstance().getReference().child("Follow").child(user.getId())
.child("followers").child(firebaseUser.getUid()).removeValue();
// FirebaseDatabase.getInstance().getReference("Notifications").child(user.getId()).removeValue();
}
}
});
}
这里是isFollowing函数:
private void isFollowing(final String userid, final Button button) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference()
.child("Follow").child(firebaseUser.getUid()).child("following");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child(userid).exists()) {
button.setText("following");
button.setBackgroundResource(R.drawable.buttonafter);
} else {
button.setText("follow");
button.setBackgroundResource(R.drawable.buttonbefore);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
它一直返回按钮上的默认“关注”文本,因此不允许我关注任何人。
如果您知道导致此问题的原因,请提供帮助。
【问题讨论】:
标签: android firebase firebase-realtime-database android-recyclerview