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