一尘不染

如何滚动到RecyclerView的底部?scrollToPosition不起作用

java

加载活动后,我想滚动到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.scrollToPosition(GENERIC_MESSAGE_LIST.size() + 1)

这不起作用。中有30个元素GENERIC_MESSAGE_LIST


阅读 1151

收藏
2020-03-24

共1个答案

一尘不染

只需进行设置setStackFromEnd=truesetReverseLayout=true以使LLM可以从头开始布局项目。

两者之间的区别在于,setStackFromEnd将视图设置为显示最后一个元素,布局方向将保持不变。(因此,在从左到右的水平Recycler视图中,将显示最后一个元素,向左滚动将显示较早的元素)

setReverseLayout将更改适配器添加的元素的顺序。布局将从最后一个元素开始,该元素将在LTR回收器视图中最左侧,然后向右滚动将显示较早的元素。

样品:

final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
linearLayoutManager.setReverseLayout(true);
_listView.setLayoutManager(linearLayoutManager);
2020-03-24