我有一个ListView,它显示一个项目列表,每个项目都有一个图标和几个文本。
我正在使用ListAdapter.getView()方法的“convertView”参数,改变现有视图,而不是在参数为非null时创建新视图。
我原本以为ListView只有在滚动出可见视口后才能回收旧视图,但似乎并非如此。似乎ListView在每次调用ListAdapter.getView()时在“convertView”参数中提供相同的对象。单个视图呈现在屏幕上,然后在下次调用getView()时再次发送。
这对我来说是一个很大的问题,因为我希望修改以前渲染的视图。我有一个后台线程检索项目的图标,这需要“相当多”的时间,并且在ListAdapter.getView()视图呈现代码中放置是一个不可接受的用户界面负担。
有没有办法让ListView不重用当前显示在屏幕上的视图?我想实现视图重用的性能/效率提升,并能够在后台线程中加载图标。
答案 0 :(得分:0)
我认为你有一段时间遇到的类似问题:Old items visible a while, in listview or gridview, when recycling
您必须在getView()的开头“重置”列表的回收项。无论初始状态如何,都将它们设置回进度条或不可见。直到他们获取正确的数据。
答案 1 :(得分:0)
我发现问题在于Android正在创建一个额外的,从未呈现过的临时视图,以便在某些条件下用于布局/测量。我认为这个视图呈现在屏幕上是不正确的。