我有一个列表视图,显示包含来自网络图像的行。
一旦需要绘制一行,在Adapter.getView(...)
中,我会在后台下载图像并将其设置为UI线程中的ImageView
。这意味着位图以延迟的方式设置到ImageView中。
我用简单的可绘制资源尝试了延迟的setImage ...(),结果是一样的。
我观察到在延迟管理器中设置资源会导致整个列表从位置0开始重绘,甚至没有显示 - 直到显示的位置。明显的问题是列表滚动缓慢而且不稳定。
我想在这里格外小心:滚动时会发生这种情况。新看到的项目会作为常规makeAndAddView
的一部分绘制。但是,在此之后,导致所见行的所有行都被绘制为measureHeightOfChildren
的一部分。
立即设置图像而不延迟图像不会导致onMeasure
被调用。
那么如何防止重新列出所有列表?为什么直接setImage和延迟之间的行为不同?
答案 0 :(得分:0)
延迟与未延迟的setImage...()
问题仍未得到解决。
我设法通过将列表视图layout_height
设置为match_parent
而不是wrap_content
来阻止对延迟方案的衡量。