我知道有一些关于我试图在SO上解决的问题的讨论。以下是我发现的一对夫妇:this和this。
这些建议在某种程度上对我有用,但遗憾的是并没有解决我的整个问题。让我详细说明一下:
简单地说,我有一个放在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);
};
并在Fragment类中定义了highlightPosition的定义方式:
public void highlightPosition(int pos) {
//listView.getLayoutManager().scrollToPosition(pos);
listView.smoothScrollToPosition(pos);
//listView.scrollToPosition(pos);
//LinearLayoutManager llm = (LinearLayoutManager) listView.getLayoutManager();
//llm.scrollToPositionWithOffset(pos , 29);
}
你会注意到我在highlightPosition的核心功能中尝试了一些技巧,但都没有效果。
必须有一些东西丢失,任何人都可以建议。
答案 0 :(得分:0)
在onOptionsItemSelected方法中执行
mPagerAdapter.highlightPosition(listView.getAdapter().getItemCount() - 1);
答案 1 :(得分:0)
要在listview中滚动,您可以使用本机功能
直接滚动:
getListView().setSelection(21);
顺畅滚动:
listview.smoothScrollToPosition(21);
答案 2 :(得分:0)
mRecyclerView.getLayoutManager().smoothScrollToPosition(mRecyclerView,null, finalCustomItems.size()-1);