Android:滚动到RecyclerView

时间:2017-05-03 04:02:33

标签: android android-fragments android-recyclerview scrollbar

我知道有一些关于我试图在SO上解决的问题的讨论。以下是我发现的一对夫妇:thisthis

这些建议在某种程度上对我有用,但遗憾的是并没有解决我的整个问题。让我详细说明一下:

简单地说,我有一个放在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的核心功能中尝试了一些技巧,但都没有效果。

必须有一些东西丢失,任何人都可以建议。

3 个答案:

答案 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);