我知道有一些关于我试图解决SO的讨论。到目前为止,我发现了几个:这个和这个。
这些建议在某种程度上对我有用,但不幸的是并没有解决我的整个问题。让我详细说明一下:
简单地说,我有一个项目的列表,我把它放在一个回收视图中,我想滚动到某个项目后,我点击了顶部菜单栏上的一个按钮。简单地说,我只是想滚动到最后一个项目时,点击,现在。
在检索到对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);
};
而在Fragment类内部是如何定义的:
public void highlightPosition(int pos) {
//listView.getLayoutManager().scrollToPosition(pos);
listView.smoothScrollToPosition(pos);
//listView.scrollToPosition(pos);
//LinearLayoutManager llm = (LinearLayoutManager) listView.getLayoutManager();
//llm.scrollToPositionWithOffset(pos , 29);
}
你会注意到,我尝试了一些技术的核心功能的高光位置,但没有工作。
一定有什么东西不见了,谁能建议一下。
在onOptionsItemS的方法做
mPagerAdapter.highlightPosition(listView.getAdapter().getItemCount() - 1);
对于列表视图中的滚动,您可以使用本机函数
对于直接滚动:
getListView().setSelection(21);
要平滑滚动:
listview.smoothScrollToPosition(21);
mRecyclerView.getLayoutManager().smoothScrollToPosition(mRecyclerView,null, finalCustomItems.size()-1);