预期的行为:
您好,我正在使用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项目的点击位置。滚动至多远都无所谓,如果单击第三个可见项目,就好像单击顶部的第三个绝对项目一样。
如何解决此问题,以便检索正确的项目?
尝试
int itemPosition = getAdapterPosition ();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句