recyclerView中的ViewHolder注册可见的视图位置,而不是绝对的视图位置

谷歌

预期的行为:

您好,我正在使用recyclerView来显示图像网格,这些图像是从保存在ViewAdapter中的List <>加载的。当用户单击图像时,将创建一个新的片段,并将其作为参数提供给List <>中的相应项。我用这段代码做到这一点

private class ShowHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
//holder code...

        @Override
        public void onClick(View view) {
            int itemPosition = mRecyclerView.indexOfChild(view);

            Fragment newDetail = DetailFragment.newInstance(mShowAdapter.getList().get(itemPosition));
            //launch Fragment
        }
    }

这:mShowAdapter.getList().get(itemPosition)从List <>返回要传递的项目。这对于视图中的任何项目都适用,但前提是我不向下滚动。

错误:

当我向下滚动几页并单击一个项目时,将从列表中提取了错误的项目。例如,假设我在滚动几页后单击了第一个可见项。从列表中检索到的项目实际上是List <>中的第一个项目,而不是第27个。

发生这种情况是因为recyclerView正在注册相对于VISIBLE项目的点击位置。滚动至多远都无所谓,如果单击第三个可见项目,就好像单击顶部的第三个绝对项目一样。

如何解决此问题,以便检索正确的项目?

拉胡尔·沙玛(Rahul Sharma)

尝试

int itemPosition = getAdapterPosition ();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章