回收站视图安排由

问题描述:

类别

项目我已经创建了一个RecyclerViewGridManagerLayout回收站视图安排由

为了简单起见,我的卡有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调用此方法。

希望这对你有用。

+0

我还没有尝试过,但只是看着它,这是在前面的数组顶部?这不会重复我的原始列表中的项目? –

+0

@ImranHamid确实!但是在添加新列表之前,您可以清除原始的一个。我只是想解决你的动画问题。 –

+0

感谢您的帮助!我意识到在使用'Collections.swap'时,使用'notifyItemMoved()'处理位置移动动画。 –

我设法解决这个问题。如果有人需要的答案,请使用notifyItemMoved()其次notifyItemRangeChanged(position,getItemCount)