我创建了RecyclerView
GridManagerLayout
。
为简单起见,我的卡有2个维度,ID和稀有度。我想要一个按钮,通过他们的身份证或他们的稀有程度将卡片排列在网格中。我应该采取什么方式来做这件事,以便我可以动画卡片移动到新的位置?
按下按钮后我尝试创建新的ArrayList
,然后notifydDatasetChanged()
。物品切换位置很好,但没有动画,即卡片只是重新填充而不是“移动”
到新的位置效应。我想这是因为我定义了一个新的ArrayList
而不是改变当前列表。
我读了另一篇文章说我应该使用Collections.swap
来做到这一点。不确定这是否是我应该追求的。
有什么建议吗?
答案 0 :(得分:0)
我有一个可能的解决方案!
将此方法写入RecyclerView
适配器。
public void addItemList(List<JobListApi.Job> newlyCreatedList) {
int lastPosition = this.mainItemList.size();
this.mainItemList.addAll(newlyCreatedList);
this.notifyItemRangeInserted(lastPosition, newlyCreatedList.size());
}
现在使用新创建的ArrayList
调用此方法。
希望这适合你。
答案 1 :(得分:0)
我设法解决了这个问题。如果有人需要答案,请使用notifyItemMoved()
,然后使用notifyItemRangeChanged(position,getItemCount)