我在適配器的方法getView下面的代碼(填充一個ListView)的ListView,檢查時getView被稱爲最後一次
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被最後一次調用一行?或者,您是否想過更好的解決方案?
在你的佈局,有什麼價值您爲layout_width設置? – nKn
width = match_parent,height = wrap_content – Massimo
每次顯示行時都會調用getView,所以如果用戶上下滾動,那麼沒有真正的「最後一次調用」來爲該行getView。「因爲圖像不是緩存「>>爲什麼你沒有緩存你的圖片?相反的意思是,每次調用getView時網絡調用都會對性能造成影響...... – 2Dee