【发布时间】:2016-06-06 13:17:03
【问题描述】:
我需要构建一个水平的recyclerview,它会根据用户的选择项向左或向右滚动。
例如,假设一个适配器可以容纳 10 个项目,但只有五个是可见的。
如果用户点击位置 5,我需要滚动到位置 + 1 并向后滚动。
知道如何实现这个算法吗?
【问题讨论】:
标签: android android-recyclerview horizontal-scrolling
我需要构建一个水平的recyclerview,它会根据用户的选择项向左或向右滚动。
例如,假设一个适配器可以容纳 10 个项目,但只有五个是可见的。
如果用户点击位置 5,我需要滚动到位置 + 1 并向后滚动。
知道如何实现这个算法吗?
【问题讨论】:
标签: android android-recyclerview horizontal-scrolling
根据你的解释:
For example imagine an adapter that holds 10 items and only five are visible.
if user tap on position 5 i need to scroll to position + 1 and backwards.
您可以实现接口以获取有关itemClicked(int position)的活动或片段的回调
public interface OnItemClickListener{
void onItemClick(int position);
}
在 Activity 或 Fragment 上,您将实现该接口
public class MyActivity extends AppCompatActivity implements OnItemClickListener{
RecyclerView mRecyclerView;
@Override
public void onItemClick(int position){
if(position == ((LinearLayoutManager)mRecyclerView.getLayoutManager()) .findLastVisibleItemPosition()){
mRecyclerView.smoothScrollToPosition(position + 1);
}
}
}
【讨论】:
mRecyclerView.smoothScrollToPosition(mRecyclerAdapter.getItemCount() - 1); 只滚动到最后一项。
我有类似的问题。在我自己的情况下,我有(嵌套的)cmets/replies 列表,一旦我向下滚动列表,RecyclerView 上具有更多内容的最后一项会自动滚动到右侧,而不允许我滚动离开了。
一旦我将 RecyclerView 包裹在 NestedScrollView 中并设置overScrollMode="never",滚动行为就正常了。
希望这会有所帮助。
【讨论】: