【问题标题】:check if recyclerview item position has changed while scrolling检查滚动时recyclerview项目的位置是否发生了变化
【发布时间】:2018-06-14 07:04:56
【问题描述】:

您好,我正在尝试检查回收站视图当前位置是否已更改。并在滚动时获得该位置。尝试将它放在 onbind 中,但它只被调用一次。 搜索答案,发现this。但正在寻找一些解决方法来实施它。告诉我

@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {


    final News news = episodeList.get(position);
    Log.e(TAG, "onBindViewHolder: " + holder.getAdapterPosition() );
}

以上所有位置都记录在一起。

【问题讨论】:

  • 亲爱的你知道绑定视图是如何工作的吗?请找到它,我认为它的工作原理就像它根据屏幕高度创建视图,假设您有 20 个项目,根据设备高度它只能显示 6 个项目,然后它将视图绑定为 6 个项目,然后当您向下滚动时或向上,它将再次绑定视图,根据您的要求,我希望您在列表中的当前项目中找到中心项目位置
  • 当前项目很大,因此在屏幕上的一个点上它们只有一个项目。但是当我尝试记录适配器位置时,我得到了其中的所有位置@quicklearner
  • 你能把代码贴在这里
  • 我告诉你,当你向上或向下滚动列表时它会改变位置,你是否尝试找到中心项目并在它完全不可见时保存它的位置?

标签: android android-recyclerview


【解决方案1】:

试试这个:

只需使用您自己的布局管理器,因为我的回收站视图水平滚动

将您的 X-Position 保存为类变量并更新 onScrollListener 中的每个更改。确保您没有重置整体XScroll(例如 onScreenRotationChange)

private int overallXScroll = 0;
 //...
 mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);

        overallXScroll = overallXScroll + dx;
        Log.i("check","overall X  = " + overallXScroll);

    }
 });

【讨论】:

  • 这里的第一项位置是什么@krishsingh
  • 我对答案进行了排序,现在你可以检查了
猜你喜欢
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
相关资源
最近更新 更多