setCurrentPosition,getSeletedItem 乱序
jundaocao opened this issue · comments
jundaocao commented
使用3个LoopView模拟年月日,加载时根据日期自动滚到相应位置,确定后根据条目生成对应格式。setInitPosition,setCurrentPosition,getSeletedItem获取都会乱掉...
Wei dongjian commented
可否再具体描述下你的场景
1、根据日期滚动,是用户手动滚动,还是代码自动设置
2、年跟月获取的值是好的吗?还是年、月、日获取到都有问题
3、是不是只有日列数据会动态变化,以为一个月有30天、31天
越详细越好,我这边好模拟下你的情况
…On Tue, Nov 5, 2019 at 7:41 PM jundaocao ***@***.***> wrote:
使用3个LoopView模拟年月日,加载时根据日期自动滚到相应位置,确定后根据条目生成对应格式。setInitPosition,setCurrentPosition,getSeletedItem获取都会乱掉...
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#66?email_source=notifications&email_token=ABVI2Z2XW3WEUNAJGI7W34LQSFLXJA5CNFSM4JJBO2AKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HW3Z2XA>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABVI2ZYPU4ZWYAU766YGT6TQSFLXJANCNFSM4JJBO2AA>
.
jundaocao commented
1、3个loopView,不考虑联动,只是分别是年月日。
2、3个loopView直接写在页面布局里,按钮控制显示和隐藏。都 setItems后,分别setInitPosition(0)
3、显示的时候根据上次设置的时间(默认就是当前日期),分别调用setCurrentPosition 设置位置。
4、用户手动滚动3个view,选好时间,代码根据getSelectedItem再从各自数据表里找到数据,显示在界面上,并且隐藏3个view。
5、第一次选择完时间并显示没有问题,也有可能是前面几次都没有问题。 出问题的现象是3个view上滚动选择完时间后(只滚其中一个或者两个也可以复现),getSelectedItem返回的index不对了,这个不对可能是它自己这个view不对了,也可能是另外两个返回的index不对了。 并且下次再显示时有可能(根据上次返回的不对的数值去setCurrentPosition )loopView也不更新了,有点invalidate不生效的感觉。
Ps:我估计问题的原因就是因为我一直固定用这3个view,如果我用DialogActivity那种每次重新创建,应该就是正常的
Wei dongjian commented
没有联动,所以这个跟几个loopview没有关系,应该是具体使用场景上有问题,由于你第一次显示是正常的,可以考虑每次都恢复到初始状态
1、采用你说的dialog方式来处理,每次都是新建dialog,重新初始化,这个是OK的
2、还是采用view的方式,在下次每次可见的时候,重新设置下setItems,会触发重新初始化,这样就正常了
至于为什么会导致你说的异常,如果只是设置view的可见跟不可见,是不会导致异常的,估计还需要你具体的场景来分析,我目前也没有很好的思路,可以先试下上面的方案,至于你说的异常,欢迎去了解下loopview的代码来排查下,有什么情况,可以继续沟通
…On Wed, Nov 6, 2019 at 7:00 PM jundaocao ***@***.***> wrote:
1、3个loopView,不考虑联动,只是分别是年月日。
2、3个loopView直接写在页面布局里,按钮控制显示和隐藏。都 setItems后,分别setInitPosition(0)
3、显示的时候根据上次设置的时间(默认就是当前日期),分别调用setCurrentPosition 设置位置。
4、用户手动滚动3个view,选好时间,代码根据getSelectedItem再从各自数据表里找到数据,显示在界面上,并且隐藏3个view。
5、第一次选择完时间并显示没有问题,也有可能是前面几次都没有问题。
出问题的现象是3个view上滚动选择完时间后(只滚其中一个或者两个也可以复现),getSelectedItem返回的index不对了,这个不对可能是它自己这个view不对了,也可能是另外两个返回的index不对了。
并且下次再显示时有可能(根据上次返回的不对的数值去setCurrentPosition
)loopView也不更新了,有点invalidate不生效的感觉。
Ps:我估计问题的原因就是因为我一直固定用这3个view,如果我用DialogActivity那种每次重新创建,应该就是正常的
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#66?email_source=notifications&email_token=ABVI2Z6C4BSM5VGNFF6E23LQSKPV3A5CNFSM4JJBO2AKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDGEYBQ#issuecomment-550259718>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABVI2ZZQE2S5BBSKVT34HCLQSKPV3ANCNFSM4JJBO2AA>
.
Wei dongjian commented
最新版本已经修复了