Android - 列表项上的延迟setImage导致调用onMeasure,从而重新绘制位置0的所有内容

时间:2014-10-14 12:35:09

标签: android listview imageview listadapter onmeasure

我有一个列表视图,显示包含来自网络图像的行。

一旦需要绘制一行,在Adapter.getView(...)中,我会在后台下载图像并将其设置为UI线程中的ImageView。这意味着位图以延迟的方式设置到ImageView中。

我用简单的可绘制资源尝试了延迟的setImage ...(),结果是一样的。

我观察到在延迟管理器中设置资源会导致整个列表从位置0开始重绘,甚至没有显示 - 直到显示的位置。明显的问题是列表滚动缓慢而且不稳定。

我想在这里格外小心:滚动时会发生这种情况。新看到的项目会作为常规makeAndAddView的一部分绘制。但是,在此之后,导致所见行的所有行都被绘制为measureHeightOfChildren的一部分。

立即设置图像而不延迟图像不会导致onMeasure被调用。

那么如何防止重新列出所有列表?为什么直接setImage和延迟之间的行为不同?

1 个答案:

答案 0 :(得分:0)

延迟与未延迟的setImage...()问题仍未得到解决。

我设法通过将列表视图layout_height设置为match_parent而不是wrap_content来阻止对延迟方案的衡量。