【发布时间】:2019-06-18 23:44:43
【问题描述】:
我有一个 Android 异构 RecyclerView,我将 ImageView 和 TextView 混合在一起。我可以在最后一个位置按需添加图像或文本。如果用户已经在 RecyclerView 的最后一项,这不是问题,因为新的文本或图像只是简单地附加并显示为新的最后一项,用户可以立即查看。
但问题来了: 假设我在 RecyclerView 中有 100 张图像,而用户正在查看第一张图像(在 RecyclerView 的顶部)。假设用户添加了新图像或文本(作为最后一项附加)。现在为了向用户显示这个项目,我正在调用“smoothScrollToPosition”,如下面的代码所示:
int position = myModel.getMyGenericModels().size() - 1;
myAdapter.notifyItemInserted(position);
//Smooth scroll the recyclerview to the last message
myRecyclerView.smoothScrollToPosition(position);
smoothScrollToPosition 确实有效,但这个逻辑的问题是: 鉴于用户正在查看第一张图片,为了显示添加的最新图片,RecyclerView 滚动浏览所有 100 张图片,直到到达最后一张图片。这太尴尬了,因为它需要几秒钟的时间,而且您可以从字面上看到这些图像在屏幕上滚动,直到到达最后一张图像。
我的问题是,我如何直接从用户正在查看的第一张图片跳转到向用户显示添加的最后一张图片?
要明确我正在寻找的那种行为就像 Android WhatsApp 客户端所展示的那种行为。假设您在聊天屏幕上,并且在顶部消息上,但现在添加新图像或消息,您会看到它神奇地跳到屏幕底部,显示添加的最后一条消息。所有消息都没有这种明显的尴尬滚动 - 所以这似乎是可能的,但我不知道如何。我想知道这是怎么做到的。
【问题讨论】:
-
一定要加到最后一个位置吗?
-
是的,这就是我需要的功能。
-
scrollToPosition到底有什么问题? -
请阅读我指出问题的帖子。 scrollToPosition 确实有效,但这个逻辑的问题是:鉴于用户正在查看第一张图片,为了显示添加的最新图片,RecyclerView 滚动浏览所有 100 张图片,直到到达最后一张图片。这太尴尬了,因为它需要几秒钟的时间,而且你可以从字面上看到这些图像在屏幕上滚动,直到它到达最后一张图像。
-
对不起,我应该澄清一下我使用的是smoothScrollToPosition。
标签: android android-recyclerview