RecyclerView中的onScrollStateChanged无限调用

时间:2017-07-27 11:01:37

标签: android android-recyclerview

我有一个recyclerview,我会在每次滚动后改变中心项目的背景。因此,我用以下代码覆盖了onScrollStateChanged方法:

      @Override public void onScrollStateChanged(int state)
  {
    super.onScrollStateChanged(state);
    if (state == SCROLL_STATE_IDLE)
    {
      scrollCount++;
      Log.d(Constants.TAG, "onScrollStateChanged called in idle state: "+scrollCount+" times");
      if (mCenterItemChangedListener != null)
      {
        mCenterItemChangedListener.onCenterItemChanged(findCenterViewIndex());
      }
      int centerViewPosition = findCenterViewPosition();
      Log.d(Constants.TAG, "onScrollStateChanged: center view position" + centerViewPosition);
      smoothScrollToPosition(centerViewPosition);

    } else
    {
      for (int i = 0; i < getChildCount(); i++)
      {
        if (i != findCenterViewPosition())
        {
          getChildAt(i).findViewById(R.id.llPeriodFrontLayout).setVisibility(View.VISIBLE);
          getChildAt(i).findViewById(R.id.llPeriodBackLayout).setVisibility(View.GONE);
        }
      }
    }
  }

问题是它被无限调用,因为我正在捕捉视图到中心。 RecyclerView自动滚动直到结束,最后一个元素被视为中心元素。与文档相反,文档表示仅在状态更改时才会调用,但我只滚动一次。

0 个答案:

没有答案