我正在将回收器视图中的选定视图从其任何位置移动到位置0(recyclerview的顶部)。但是问题在于,当物品移动时,它会重复自身,这意味着它在顶部以及之前的位置该如何消除?
我尝试使用scrollToPosiotion()函数滚动itemview,但是它不起作用。现在,窗体notifyItemMoved()确实移到顶部,但是重复了,当我关闭并重新打开该应用程序时,重复的视图只删除顶部的显示。
MssgRef = FirebaseDatabase.getInstance().getReference().child("Messages").child(currentUserID).child(userIDs);
MssgRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot==null)return;
int unread = 0;
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
Messages messages = snapshot.getValue(Messages.class);
if (messages.getReceiver().equals(currentUserID)&& messages.getSender().equals(userIDs) && !messages.isIsseen()){
unread++;
}
}
if (unread != 0){
holder.unread.setVisibility(View.VISIBLE);
//move to the top
notifyItemMoved(holder.getAdapterPosition(),0);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
我希望该项目在不关闭并重新打开应用程序的情况下不会重复自身。
答案 0 :(得分:0)
您不仅可以将项目移到回收站视图中,还可以移入列表中。
尝试一下
yourList.remove(holder.getAdapterPosition());
yourList.add(0, yourData);
adapter.notifyItemMoved(holder.getAdapterPosition(),0);