回收站视图安排由
问题描述:
类别
项目我已经创建了一个RecyclerView
与GridManagerLayout
。回收站视图安排由
为了简单起见,我的卡有2个维度,它们的ID和他们的稀有。我想要一个按钮,它可以根据他们的ID或稀有程度排列网格。我应该如何去做这件事,这样我就可以将卡片移动到新的位置?
我已经试过当按下按钮,然后notifydDatasetChanged()
创建一个新的ArrayList
。这些物品切换位置很好,但没有动画,即卡牌只是重新填充,而不是“移动” 以达到新的位置效果。我想是这样,因为我正在定义一个新的ArrayList
而不是改变当前列表。
我读到另一个帖子里面说,我应该为了做到这一点使用Collections.swap
。不知道这是我应该追求的。
有什么建议吗?
答
我有一个可能的解决方案给你!
写RecyclerView
转接器内这种方法。
public void addItemList(List<JobListApi.Job> newlyCreatedList) {
int lastPosition = this.mainItemList.size();
this.mainItemList.addAll(newlyCreatedList);
this.notifyItemRangeInserted(lastPosition, newlyCreatedList.size());
}
现在使用新创建的ArrayList
调用此方法。
希望这对你有用。
答
我设法解决这个问题。如果有人需要的答案,请使用notifyItemMoved()
其次notifyItemRangeChanged(position,getItemCount)
我还没有尝试过,但只是看着它,这是在前面的数组顶部?这不会重复我的原始列表中的项目? –
@ImranHamid确实!但是在添加新列表之前,您可以清除原始的一个。我只是想解决你的动画问题。 –
感谢您的帮助!我意识到在使用'Collections.swap'时,使用'notifyItemMoved()'处理位置移动动画。 –