ListView,检查上次调用getView的时间

时间:2014-01-24 09:10:43

标签: android listview imageview

我在我的适配器的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的时间?或者,您是否考虑过更好的解决方案?

2 个答案:

答案 0 :(得分:1)

question中尝试澄清了比预期更多的调用getView()问题。由于这只是我的想法,我不确定,但我认为你在问题中提出的方法不正确 - 我的意思是,你不应该计算已经多少次{调用了{1}},而不是它有效地处理分配。

作为替代方案,您可以使用引用getView()方法中行的每个图片的LazyList加载图片。但是还有另一个可能的解决方案(我认为它也更优雅),我在另一个question提出了它。希望它可以帮到你。

答案 1 :(得分:0)

尝试使用一个可以简化工作的惰性列表 https://github.com/thest1/LazyList