如何从RecyclerView中删除SnapHelper

时间:2017-07-26 07:56:12

标签: android android-recyclerview android-support-library

我使用attachToRecyclerView(RecyclerView)并按预期工作。

问题:在某些时候我想让相同的recyclerView正常滚动,如何实现?

代码:

buildscript {

    repositories {
       jcenter()
       mavenCentral() // add repository
       maven { url 'https://maven.google.com' }
     }
}

3 个答案:

答案 0 :(得分:8)

recyclerview-v7:25.1.0开始,足以致电

snapHelper.attachToRecyclerView(null); 

删除SnapHelper

我遇到了同样的问题。致电

clearOnScrollListeners();
setOnFlingListener(null);
RecyclerView实例上的

为我做了诀窍。在我的情况下仅调用setOnFlingListener(null);是不够的

答案 1 :(得分:5)

好吧,它是在SnapHelper官方API上编写的:公共方法=> attachToRecyclerView:[要添加此帮助程序的RecyclerView实例如果要从当前的RecyclerView中删除SnapHelper,则返回null 。] https://developer.android.com/reference/android/support/v7/widget/SnapHelper.html#attachToRecyclerView%28android.support.v7.widget.RecyclerView%29

答案 2 :(得分:0)

如果您不想保留 SnapHelper 的引用,那么根据官方文档,您可以使用另一种方法

recyclerView.setOnFlingListener(null);

来自Android文档

  
      
  • 通过调用将{@link SnapHelper}附加到提供的RecyclerView上
  •   
  • {@ link RecyclerView#setOnFlingListener(RecyclerView.OnFlingListener)}。
  •   
  • 您可以使用{@code null}调用此方法,以将其与当前的RecyclerView分离。
  •   

警告

SnapHelper.attachToRecyclerView()可能引发 IllegalArgumentException

  
      
  • 如果已存在{@link RecyclerView.OnFlingListener}
  • ,则抛出IllegalArgumentException。   
  • 附加到提供的{@link RecyclerView}。
  •