加载活动后,我想滚动到 RecyclerView 列表的底部。
GENERIC_MESSAGE_LIST = (ArrayList) intent.getExtras().getParcelableArrayList(ConversationsAdapter.EXTRA_MESSAGE); conversationView = (RecyclerView) findViewById(R.id.list_messages); conversationView.setHasFixedSize(true); conversationViewLayoutManager = new LinearLayoutManager(this); conversationView.setLayoutManager(conversationViewLayoutManager); conversationViewAdapter = new ConversationAdapter(GENERIC_MESSAGE_LIST, this); conversationView.setAdapter(conversationViewAdapter);
conversationView.scrollTo(...)抛出 RecyclerView 不支持的异常,并且conversationView.scrollToPosition(...)似乎没有做任何事情。
conversationView.scrollTo(...)
conversationView.scrollToPosition(...)
在上面的代码块之后,我添加了
conversationView.scrollToPosition(GENERIC_MESSAGE_LIST.size() + 1)
这是行不通的。中有 30 个元素GENERIC_MESSAGE_LIST。
GENERIC_MESSAGE_LIST
只需设置 setStackFromEnd=true 左右 setReverseLayout=true ,LLM 将从头开始布局项目。
setStackFromEnd=true
setReverseLayout=true
这两者的区别在于setStackFromEnd将视图设置为显示最后一个元素,布局方向将保持不变。(因此,在从左到右的水平 Recycler 视图中,将显示最后一个元素,向左滚动将显示较早的元素)
setStackFromEnd
而setReverseLayout将更改适配器添加的元素的顺序。布局将从最后一个元素开始,这将是 LTR Recycler 视图中最左侧的元素,然后向右滚动将显示较早的元素。
setReverseLayout
样本:
final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity()); linearLayoutManager.setReverseLayout(true); _listView.setLayoutManager(linearLayoutManager);
有关详细信息,请参阅文档。