Best way to handle multiple getView calls from inside an Adapter
android, listview
Solution
From api.
public abstract View getView (int position, View convertView,
ViewGroup parent)
convertView - The old view to reuse, if possible. Note: You should check that this view is non-null and of an appropriate type before using. If it is not possible to convert this view to display the correct data, this method can create a new view.
So if getView has already been called for this specific index then convertView will be the View object that was returned from that first call.
You can do something like.
if(!(convertView instanceof ImageView)){
convertView = new ImageView();
//get image from whereever
} else {} // ImageView already created
Problem
I have a `ListView` with custom `ArrayAdapter`. Each of the row in this `ListView` has an icon and some text. These icons are downloaded in background,cached and then using a callback, substituted in their respective `ImageViews`. The logic to get a thumbnail from cache or download is triggered every time `getView`() runs. Now, according to Romain Guy: "there is absolutely no guarantee on the order in which getView() will be called nor how many times." I have seen this happen, for a row of size two getView() was being called six times! How do I change my code to avoid duplicate thumbnail-fetch-requests and also handle view recycling? Thanks.