java - RecyclerView notificationItemMoved() 复制移动的 View

标签 java android android-recyclerview

我正在将回收器 View 中的选定 View 从其位置移动到位置 0(回收器 View 的顶部)。但问题是,当项目移动时,它会重复自身,这意味着它位于顶部以及之前的位置,如何摆脱它?

我尝试使用scrollToPosiotion()函数滚动itemview,但它不起作用。现在形成notifyItemMoved()它确实移动到顶部但重复,当我关闭并重新打开应用程序时,重复的 View 删除仅显示在顶部。

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) {

                        }
                    });

我希望该项目在不关闭并重新打开应用程序的情况下不会重复自身。

最佳答案

您不仅可以将项目移动到回收器 View 中,还可以移动到列表中。

试试这个

yourList.remove(holder.getAdapterPosition());
yourList.add(0, yourData);
adapter.notifyItemMoved(holder.getAdapterPosition(),0);

关于java - RecyclerView notificationItemMoved() 复制移动的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56842418/

相关文章:

java - 从Activity传递参数到doInBackground方法,异步任务

java - 为什么不推荐使用 GetServerAuthCodeResult?如何在已安装的应用程序中执行等效操作?

java instanceof 和 getClass() 未按预期工作

android - 可访问性阅读将 ListView 中的项目显示为列表项 + 标题 View

java - 无法在 Eclipse ide 中打开 SDK 管理器

android - RecyclerView 上的波纹效果在轻敲时不起作用

android - Recyclerview 和 Detailsfragment : elevation, 层次结构之间的共享元素转换,bringToFront

android - Recycler View 添加删除项目动画未显示在 swapCursor 中

java - 在 java 中使用 FileNameExtensionFilter 时禁用 "All files"

android - Activity 变化的翻转动画