Android RecyclerView:在项目上,插入上推而不是下推
Android RecyclerView : on item, insert push up instead of down
假设我有一个包含大量项目视图的 RecyclerView:[a, b, c, d, e, ...]
。如果我想在 b
和 c
之间插入一个新的 ItemView X
,我更新我的底层集合并调用 notifyItemInserted(2)
。我现在有 [a, b, X, c, d, e, ...]
.
我的问题是,当 X
出现时,它会将每个视图 推到 之后(将 e
推出屏幕),我需要它将每个视图 推到 之前(将 a
推出屏幕)。
有办法吗?
发生这种情况是因为 LinearLayoutManager 将列表的开头视为锚点位置。如果希望列表末尾为锚点位置,可以设置stackFromEnd = true;
。在这种情况下,当列表第一次加载时,您会看到;
V W X Y Z // assuming alphabet is your list of items
这是对话应用等应用的常见情况。
如果你想在 stackFromEnd
设置为 true
时从头开始,那么你可以在适配器初始化时调用 scrollToPosition(0)
。
假设我有一个包含大量项目视图的 RecyclerView:[a, b, c, d, e, ...]
。如果我想在 b
和 c
之间插入一个新的 ItemView X
,我更新我的底层集合并调用 notifyItemInserted(2)
。我现在有 [a, b, X, c, d, e, ...]
.
我的问题是,当 X
出现时,它会将每个视图 推到 之后(将 e
推出屏幕),我需要它将每个视图 推到 之前(将 a
推出屏幕)。
有办法吗?
发生这种情况是因为 LinearLayoutManager 将列表的开头视为锚点位置。如果希望列表末尾为锚点位置,可以设置stackFromEnd = true;
。在这种情况下,当列表第一次加载时,您会看到;
V W X Y Z // assuming alphabet is your list of items
这是对话应用等应用的常见情况。
如果你想在 stackFromEnd
设置为 true
时从头开始,那么你可以在适配器初始化时调用 scrollToPosition(0)
。