cocos2dx 3.3 中listView中遇到的bug如果解决?

最近在做游戏的卡牌的浏览和删除功能,用到了listView 。我用的是cocos2dx 3.3 lua来写东西,cocostudio 1.6 。
最近在做的时候有些崩溃,listView我遇到的两个我认为很致命的bug,严重的影响了我接下来能否有信心做下去的感觉。
1 在我初次为listView里面 pushBackCustomItem 一些item以后。我无法获取到子item的position 。如下信息,不会加载图片,就把log贴上来了。

没有position信息的开始
------k is : 1 -----position is: 0 --offset is: 0
------k is : 2 -----position is: 0 --offset is: 0
------k is : 3 -----position is: 0 --offset is: 0
------k is : 4 -----position is: 0 --offset is: 0
------k is : 5 -----position is: 0 --offset is: 0
------k is : 6 -----position is: 0 --offset is: 0
------k is : 7 -----position is: 0 --offset is: 0
------k is : 8 -----position is: 0 --offset is: 0
------k is : 9 -----position is: 0 --offset is: 0
------k is : 10 -----position is: 0 --offset is: 0
------k is : 11 -----position is: 0 --offset is: 0
------k is : 12 -----position is: 0 --offset is: 0

有position 信息,但是是滑动了listView后才获得的。
------k is : 1 -----position is: 0 --offset is: 0
------k is : 2 -----position is: 885 --offset is: 885
------k is : 3 -----position is: 1475 --offset is: 1475
------k is : 4 -----position is: 2065 --offset is: 2065
------k is : 5 -----position is: 2655 --offset is: 2655
------k is : 6 -----position is: 3245 --offset is: 3245
------k is : 7 -----position is: 3835 --offset is: 3835
------k is : 8 -----position is: 4425 --offset is: 4425
------k is : 9 -----position is: 5015 --offset is: 5015
------k is : 10 -----position is: 5605 --offset is: 5605
------k is : 11 -----position is: 6195 --offset is: 6195
------k is : 12 -----position is: 6490 --offset is: 6490

刚刚初始化pushBack后listView的子item无法知道其position信息,只有滑动后才有。不清楚原理为什么是这样。
为什么要用到坐标呢,是因为我需要确定坐标位置,在整个listView的长度上来确定其位置的百分比,然后,滚动到
某个item的位置去。为什么要滚动到那里去呢,因为我要做删除卡牌功能,并且是删除某个卡牌后,重新加载剩下整个卡牌。
可能有人会问,为毛不删除单个的呢?是, 是可以删除单个的,所以这就会牵扯第二个bug。一环套一环的bug 我也是醉了。
做个东西,真费劲。其实要是能解决第一个bug,初始pushBack的item怎样能获取其item的position信息。我就知足了。
因为起码我知道我可以利用坐标来滚动到我想要到的位置,显示上不会出问题。

2 当删除item为最后一个或者倒数第二个item的时候,或者可以说,导致内容器小于等于外面容器的时候,item数据排布有错误。

在lua的listView中有removeItem 这个一个根据索引(index)或者知道是哪个节点(Widget)删除单个item。 是的可以完成删除功能了。
可是,需求往往要的更多。因为卡牌要放在最中间来开始浏览, 并且最中间的是被选中的那个,还要左右滑动着浏览和删除。
如果,把listView的起始位置显示的卡牌,放在中间对应,那么会有个问题,那就是你会发现左边的地方你没有触摸区域,如果做为玩家。
体验会非常不好。所以我为了延长触摸区域,把整个listView显示宽度设置为3个卡牌的宽度那么大。位置对在游戏中间,把第一个和最后一个放上透明的卡牌。
中间的放上真正的卡牌。然而,事情很美妙,看起来效果也不错。可是,问题还是会有的。
我的listVeiw pushBack的顺序是, 透明卡----真卡----透明卡 ,可是显示 永远都是 真卡----透明卡----透明卡,不管是起初添加了三个,还是删除
删到只剩下三个。都会出现上述情况。所以就考虑要是否重新加载,结果重新加载还是一样。因为只有3个卡的宽度,
最扯的方式就是在删除到剩最后一个真卡的时候,再加一个透明卡,当时想也是试验。就成了 透明卡----真卡----透明卡—透明卡 然后禁用滑动功能。
结果pushBack后,竟然顺序正常。所以闹不明白第二个bug是怎么回事,感觉就是来和我做对的一样。

如果有遇到或者,有办法解决上面两个问题的方法。还望不吝啬指教。谢谢~~~~

估计写的有些问题,不一定有人看的明白~~~~
不过问题确实存在,只是不想升级版本。有可能解决了,也有可能没解决listView问题。

不过,我自己找到了,解决自己问题的偏门。 既然我能找到我listView的索引(index), 而且坐标的之间的关系,也是一个等差数列,也知道卡牌的宽度cardWidth。
我自己就可以列个小方程来自己获取的。 还好的是,卡牌节点的坐标是不会边的。

positionX = (index - 1) * cardWith 减一是因为我需要的卡牌索引是从1开始的。