使用RecyclerView将项目放在列表

时间:2015-05-13 04:36:56

标签: android scroll android-recyclerview

我希望用户能够导航到RecyclerView中的某些位置。我可以确定项目的位置,当我使用recycleView.smoothScrollToPosition()时,它会滚动到正确的项目 问题是这个项目位于屏幕的底部。如何滚动以使项目显示在顶部(它必须是第一个可见项目)。

以下是我用来设置RecyclerView的代码:

recyclerView = (RecyclerView)findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(false);
recyclerView.setAdapter(actionAdapter);
final LinearLayoutManager layoutManager = new LinearLayoutManager(InteractionTimelineActivity.this, LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setOnScrollListener(new RecyclerScrollListner());

这就是我滚动的方式:

if (recycleView != null) {               
    recycleView.smoothScrollToPosition(position + 1);
}

1 个答案:

答案 0 :(得分:0)

您需要计算一个屏幕上适合的项目数量,并在滚动时将其用作偏移量!您可以使用findFirstCompletelyVisibleItemPosition()的方法findLastCompletelyVisibleItemPosition()LayoutManager来计算偏移量,如下所示:

int offset = getLayoutManager()).findLastCompletelyVisibleItemPosition() 
           - getLayoutManager()).findFirstCompletelyVisibleItemPosition();

一旦你有了偏移量,就可以像这样滚动:

recycleView.smoothScrollToPosition(Math.min(position + offset + 1, adapter.getItemCount()));