> 文章列表 > fmxui listview 遍历时报错

fmxui listview 遍历时报错

fmxui listview 遍历时报错

前言

在用listview 的时候,

习惯性的遍历listview,然后操作,此方法是不可行的

如 :当没滚动条时,这样for循环没问题 ,如果有滚动条,则有可能会出错

 for i := 0 to listview.count - 1 do
beginend

fmxui的listview的思想比较先进,默认缓存模式,数据与view分离

如视线内的item,你可以随便使用其itemsview[],

但不显示的item,用时就会报错 item not found

当滚动时,会复用缓存item,这样内存应该用的是比较少的

当时报错,我找原因找了很久,卧槽,后来不能这么玩,

还好是开源的,研究研究源码,找到了原因。

正确使用:

当我们要遍历listview时,

首先将当前滚动条滚动到最开始处

 ListViewDishInfo.ScrollToIndex(-1);

然后再遍历

 for i := 0 to ListViewDishInfo.count - 1 dobeginif i > ListViewDishInfo.LastRowIndex then //已经到当前显示的最后一行则继续滚动到当前ListViewDishInfo.ScrollToIndex(i);view := (ListViewDishInfo.ItemViews[i] as TCustomListView); //取itemviewend