Reputation: 956
I read this question where it says not to worry about it but I guess I need some reassurance.
My custom CursorAdapter's bindView:
@Override
public void bindView(View view, Context context, Cursor c) {
// get handles for views in xml
ImageView imageView = (ImageView)view.findViewById(R.id.add_lvrow_image);
TextView titleView = (TextView)view.findViewById(R.id.add_lvrow_title);
// get data from cursor and "massage" if necessary
String imageUri = c.getString(c.getColumnIndex(CollectionsTable.COL_IMAGEURI));
String title = c.getString(c.getColumnIndex(CollectionsTable.COL_TITLE));
// terrible time getting run-time sizes of imageView, hardcode for now
int XML_WIDTH = 100;
int XML_HEIGHT = 100;
Log.d(TAG, SCOPE + "bindView called: " +count);
count++;
// use static util class
ImageUtils.loadBitmap(context, imageUri, imageView, XML_WIDTH, XML_HEIGHT);
I'm following the series of Android tutorials for loading large bitmaps but have moved decodSmapledBitmapFromUri
, calculateInSmapleSize
, loadBitmap
, BitmapWorkerTask
, AsyncDrawable
, cancelPotentialWork
, and getBitmapWorkerTask
to a utility folder.
...so I'm calling loadBitmap
and it's chain 77 times for a listview that currently has 12 rows in it (six show on the screen at load time with just a hint of the 7th showing).
So I shouldn't worry, this is okay (this number of calls to bindView & the firing off of all those subsequent methods)?
Thanks for your words.
Upvotes: 3
Views: 1901
Reputation: 18151
If in your listview xml android:layout_height is not "match_parent" change it to android:layout_height="match_parent"
Upvotes: 10
Reputation: 13436
The newView
method is called for each newly created view while the bindView
is called once each view data is required to bind to the corresponding view. One of the reasons that cause bindView
get called several times is listview recycling which recycles the views that goes out of viewport. As an example when you scroll over a listview every new view which comes to view port would cause a call to bindView
. I suggest you to create a cache mechanism if your loadBitmap
is resource intensive so that you shouldn't have a new call to loadBitmap
for each bindView
call.
Upvotes: 2