我在我的适配器的getView方法中有以下代码(填充ListView)
public View getView(int position, View parent, ViewGroup root) {
View view = LayoutInflater.from(getActivity()).inflate(R.layout.my_layout, null);
ImageView imageView = view.findViewById(R.id.myImageView);
String address = addresses[position];
MyNetworkLibrary.loadAndSetImage(address, imageView);
return view;
}
ListView的单元格有一个ImageView,用于加载远程图像。
方法MyNetworkLibrary.loadAndSetImage下载远程图像,当它收到响应时,将其设置在我的ImageView中。 问题是,对于ListView的每一行,getView方法通常被调用多次,但是,虽然我使用了缓存,但由于图像没有进入缓存,我的应用程序会为每一行执行多个请求。
有没有办法知道最后一次调用getView的时间?或者,您是否考虑过更好的解决方案?
答案 0 :(得分:1)
在question中尝试澄清了比预期更多的调用getView()
问题。由于这只是我的想法,我不确定,但我认为你在问题中提出的方法不正确 - 我的意思是,你不应该计算已经多少次{调用了{1}},而不是它有效地处理分配。
作为替代方案,您可以使用引用getView()
方法中行的每个图片的LazyList
加载图片。但是还有另一个可能的解决方案(我认为它也更优雅),我在另一个question提出了它。希望它可以帮到你。
答案 1 :(得分:0)
尝试使用一个可以简化工作的惰性列表 https://github.com/thest1/LazyList