0

I use adapter with ListView this is implementation of getView

@Override
public View getView(int position, View convertView, ViewGroup parent){
    ItemViewHolder viewHolder;
    if(convertView == null){
        convertView = (RelativeLayout)inflater.inflate(resource,parent, false);
        viewHolder = new ItemViewHolder();
        viewHolder.itemTextName = (TextView)convertView.findViewById(R.id.item_name);
        viewHolder.itemTextExpDate = (TextView)convertView.findViewById(R.id.item_exp_date);
        viewHolder.itemImage = (ImageView)convertView.findViewById(R.id.item_image);

    }
    else{

        viewHolder = (ItemViewHolder)convertView.getTag();
    }

    Item item = listItem.get(position);
    if(listItem != null){
        viewHolder.itemTextName.setText(item.getName());
        viewHolder.itemTextExpDate.setText(""+item.getDaysleft());
        viewHolder.itemImage.setImageBitmap(item.getImage());       
    }
    return convertView;
}

static class  ItemViewHolder  {
    View baseView;
    TextView itemTextName;
    TextView itemTextExpDate;
    ImageView itemImage;


}

When I set Bitmap to ImageView the ListView is not smooth.

Am I implement the correct code in getView ?

Deepzz
  • 4,573
  • 1
  • 28
  • 52
aratn0n
  • 553
  • 3
  • 5
  • 17

2 Answers2

0

Look on this simple code how you can use Holder pattern simple implementation you must only extern it

On start use Integer.toString or something not

viewHolder.itemTextExpDate.setText(""+item.getDaysleft());

When you use setImage... the getView will be called multiple times.

Why you are checking is it null and 1 line faster you use it ? No sense.

if(listItem != null){
        viewHolder.itemTextName.setText(item.getName());
        viewHolder.itemTextExpDate.setText(""+item.getDaysleft());
        viewHolder.itemImage.setImageBitmap(item.getImage());       
    }

And the most important thing you don't set holder on the View this code doesn't crash for you?

Look at topics:

Lazy loading getView called multiple times getView called multiple times 2

Community
  • 1
  • 1
Gelldur
  • 11,187
  • 7
  • 57
  • 68
0

Try adding : convertView.setTag(viewHolder) in the if-block. Also, use a method like Universal Image Loader for loading images in list view