gpt4 book ai didi

android - 单击按钮 View 后,recyclerview 的两个项目都会更新

转载 作者:行者123 更新时间:2023-11-30 00:09:28 25 4
gpt4 key购买 nike

我有一个带有明信片的 RecyclerView。所以每张明信片上都有一个喜欢的按钮。当我点击喜欢按钮时。有时它工作正常并更新当前项目。但是当我点击类似按钮时滚动一些后,它会同时更新另一个项目。

它不会将该数据发送到服务器。但是,只有 View 被更新。然后当我再次上下滚动时。数据恢复正常。

问题出在以下 onClick 方法中:-

FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child("like").exists()){

holder.like.setImageResource(R.drawable.ic_favorite_red_500_36dp);
holder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("like").removeValue();

}
});

}else if(dataSnapshot.child("dislike").exists()) {

holder.like.setImageResource(R.drawable.brokenheart);
holder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("dislike").removeValue();

}
});
}else{
holder.like.setImageResource(R.drawable.ic_favorite_border_red_500_36dp);
holder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("dislike").removeValue();
FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("like").setValue(true);

}
});


}


}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

holder.like.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("like").removeValue();
FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("dislike").setValue(true);

return true;
}
});

完整的适配器类 https://pastebin.com/UnFGahWT

最佳答案

尝试以下操作:-

public ViewHolder(View itemView) 方法中设置您的点击监听器,并使您的 ViewHolder 类实现 View.OnClickListener。

在适配器中添加:

  public Topic getItem(int position) {
return topics.get(position);
}

在 ViewHolder 的 onClick 方法中添加:

 int position = getAdapterPosition();
if (position == RecyclerView.NO_POSITION) return;
item = getItem(position);

因此,您将获得您需要更改或对其执行某些操作的确切对象。

关于android - 单击按钮 View 后,recyclerview 的两个项目都会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48379103/

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