(第一次修订,于2009年12月9日)
想要做的事: 使用使用List的ItemRenderer,为List中的每一项都加一个序号。
出现的问题: 当为List添加多个ItemRenderer的时候,会出现重复的序号。
做法: ItemRenderer实现IDropInListItemRenderer,重写listData属性,并绑定DataChange事件。让ItemRenderer中的Text控件text绑定listData.selectedIndex+1。
本来想这样就能够实现1、2、3、4、5、……的序号的,但是没有想到添加前4个序号的时候,一切都是正常。但是,当添加第5个序号的时候,滑动一下滚动条就会发现本来应该是5的序号变成了4,在往上滚动滚动条,2也变成了1。来回滚动滚动条,序号更不得了,变得全乱了。
网上查了许多中方法,也许是本人太笨,并没有找到好的解决方案。看了Oreilly的Cookbook也没有看明白,但是我确定第七章最后一节一定有我想要的答案,于是我拼命的理解,拼命的尝试。
通过这段文字可以知道,产生序号乱序的原因是我滚动了滚动条。不能仅仅使用listData.selectedIndex+1的方法赋值。必须要用itemRenderer中的数据同selectedItem进行比较。
结论:
在原来的基础上仅仅将Text控件的text属性绑定{ ArrayCollection((_listData.owner as List).dataProvider).getItemIndex(this.data)+1} 就可以实现正常的序号显示了,其实非常简单。
第一次修订:
注意组件的绑定属性:{ ArrayCollection((_listData.owner as List).dataProvider).getItemIndex(this.data)+1}中的ArrayCollection也有可能是其他类型,如XMLListCollection。