Android:滚动到回收瓶中的最后一项



我知道关于我试图解决的问题有一些讨论。到目前为止,这是我发现的一对夫妇:这和这个。

这些建议对我有所扩展,但不幸的是没有解决我的整个问题。让我详细说明:

简单地说,我有一个我在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);

最新更新