我知道关于我试图解决的问题有一些讨论。到目前为止,这是我发现的一对夫妇:这和这个。
这些建议对我有所扩展,但不幸的是没有解决我的整个问题。让我详细说明:
简单地说,我有一个我在Recyclerview中放置的项目列表,然后在我单击顶部菜单栏上的按钮后,我想滚动到某个项目。简而言之,我只是想在单击时滚动到最后一项。
我试图在检索引用到RecyClerview之后立即放置代码(listView是RecyClerview(:
listView = (RecyclerView) mRoot.findViewById(R.id.list_section);
listView.setHasFixedSize(true);
LinearLayoutManager mListViewManager = new LinearLayoutManager(getActivity());
listView.setLayoutManager(mListViewManager);
listView.scrollToPosition(entries.size()-1);
这有效。但是,如果我尝试做以下内容,请注意以下评论:
//enter this block when the menu item was clicked
public boolean onOptionsItemSelected(MenuItem item) {
//mPagerAdapter is a reference to a FragmentStatePagerAdapter extended class
mPagerAdapter.highlightPosition(list.size()-1);
}
//selSchedListFragment is a reference to a Fragment extended class
public void highlightPosition(int pos){
selSchedListFragment.highlightPosition(pos);
};
片段中的片段是如何定义的亮点:
public void highlightPosition(int pos) {
//listView.getLayoutManager().scrollToPosition(pos);
listView.smoothScrollToPosition(pos);
//listView.scrollToPosition(pos);
//LinearLayoutManager llm = (LinearLayoutManager) listView.getLayoutManager();
//llm.scrollToPositionWithOffset(pos , 29);
}
您会注意到我在突出显示的核心功能中尝试了一些技术,但没有任何作用。
一定有一些缺少的东西,任何人都可以建议。
在Onoptionsitemselected方法中
mPagerAdapter.highlightPosition(listView.getAdapter().getItemCount() - 1);
用于在listView中滚动您可以使用本机函数
直接滚动:
getListView().setSelection(21);
对于光滑的滚动:
listview.smoothScrollToPosition(21);
这对我有效地将回收器视图焦点移至最后一行
mRecyclerView.getLayoutManager().smoothScrollToPosition(mRecyclerView,null, finalCustomItems.size()-1);