Skip to content
This repository has been archived by the owner on Dec 8, 2020. It is now read-only.

刷新的索引会出现问题 #46

Closed
CuiBow opened this issue Jan 25, 2018 · 16 comments
Closed

刷新的索引会出现问题 #46

CuiBow opened this issue Jan 25, 2018 · 16 comments

Comments

@CuiBow
Copy link

CuiBow commented Jan 25, 2018

当滑动结束拿到currentPosition 刷新适配器会出现索引错乱的问题

@leochuan
Copy link
Owner

描述的能具体一点吗?

@CuiBow
Copy link
Author

CuiBow commented Jan 25, 2018

适配器onBindViewHolder的索引不是当前rv显示的item的索引

@leochuan
Copy link
Owner

我的意思是 滑动结束拿到 currentPosition 刷新适配器 是什么操作,方便的话代码贴一下

@CuiBow
Copy link
Author

CuiBow commented Jan 25, 2018

if (newState == RecyclerView.SCROLL_STATE_IDLE) {
if (currentPosition != layoutManager.getCurrentPosition()) {
currentPosition = layoutManager.getCurrentPosition();
for (int i = 0; i < departmentListBean.size(); i++) {
departmentListBean.get(i).setSelect(false);
}
departmentListBean.get(currentPosition).setSelect(true);
adapter.notifyDataSetChanged();
if (doctorsList != null) {
initViewPager(doctorsList.get(currentPosition));
}
}
}

@leochuan
Copy link
Owner

所以你要做的事情是在滑动结束的时候,将当前的item的状态变成已选择是吗?

@CuiBow
Copy link
Author

CuiBow commented Jan 25, 2018

是的 当选中之后改变当前item的显示状态

@leochuan
Copy link
Owner

我试了下 并没有什么问题 你有开无限滚动 或者有用 CenterSnapHelper

@CuiBow
Copy link
Author

CuiBow commented Jan 25, 2018

这是我的设置代码
centerSnapHelper = new CenterSnapHelper();
layoutManager = new CircleLayoutManager(getActivity());
layoutManager.setGravity(CircleLayoutManager.TOP);
float startNum = 750;
float endNum = 1080;
float proportion = startNum / endNum;
layoutManager.setRadius((int) (ScreenUtils.getScreenWidth() * proportion));
layoutManager.setInfinite(true);
float speed = 15 * 0.005f;
layoutManager.setMoveSpeed(speed);

@leochuan
Copy link
Owner

这样设置并没有什么问题,你adapteronBindViewHolder贴上来 看一下

@leochuan
Copy link
Owner

378534547, 这是我qq

@CuiBow
Copy link
Author

CuiBow commented Jan 25, 2018

https://github.com/CuiBow/TestViewPager
这是我修改的demo您可以看一下 快速滑动就会出现问题

@CuiBow CuiBow closed this as completed Jan 25, 2018
@akebrt
Copy link

akebrt commented Feb 28, 2018

层主怎样解决的?我这边也遇到了

@CuiBow
Copy link
Author

CuiBow commented Feb 28, 2018 via email

@leochuan
Copy link
Owner

他是因为实际的数据量,少于屏幕显示的数据数量 比如list里的数据只有2个 但是屏幕上能显示3个 所以其实屏幕上的两个view绘制的都是同一个数据表示同一个position 我给他的建议是在数据量很小时setMaxVisibleItemCount()控制一下屏幕上能显示View的数量

@akebrt
Copy link

akebrt commented Mar 1, 2018

可以解决。谢谢

@MaosanDao
Copy link

已解决,谢谢

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants