【问题标题】:Horizontal RecyclerView scroll left or right if there are more items如果有更多项目,水平 RecyclerView 向左或向右滚动
【发布时间】:2016-06-06 13:17:03
【问题描述】:

我需要构建一个水平的recyclerview,它会根据用户的选择项向左或向右滚动。

例如,假设一个适配器可以容纳 10 个项目,但只有五个是可见的。

如果用户点击位置 5,我需要滚动到位置 + 1 并向后滚动。

知道如何实现这个算法吗?

【问题讨论】:

    标签: android android-recyclerview horizontal-scrolling


    【解决方案1】:

    根据你的解释:

    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); 只滚动到最后一项。
    • @AngleV ...??有什么困惑吗?
    • 我想我解释得不对。如果用户点击靠近 recyclerview 右边缘的项目,recyclerview 必须滚动到左侧并显示下一个可用项目。现在,如果用户点击靠近 recyclerview 左侧的项目,它必须滚动到右侧。
    【解决方案2】:

    我有类似的问题。在我自己的情况下,我有(嵌套的)cmets/replies 列表,一旦我向下滚动列表,RecyclerView 上具有更多内容的最后一项会自动滚动到右侧,而不允许我滚动离开了。

    一旦我将 RecyclerView 包裹在 NestedScrollView 中并设置overScrollMode="never",滚动行为就正常了。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      相关资源
      最近更新 更多