2013-01-01 86 views
0

我的ListView不光滑我使用適配器ListView這是實現getView當我設置位圖的ImageView

@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; 


} 

當我設置BitmapImageViewListView並不順利。

我是否在getView中實現了正確的代碼?

回答

0

看看這個簡單的代碼,你可以如何使用Holder pattern簡單implementation你只能它的extern

在開始使用Integer.toString什麼不

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

當您使用setImage ...的getView將被多次調用。

爲什麼你檢查它是空的,你使用它快1行?沒有意義。

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

而最重要的是你沒有設置持有人在查看這段代碼不會爲你崩潰?

看主題:

Lazy loading getView called multiple times getView called multiple times 2

0

嘗試增加:convertView.setTag(viewHolder)在IF塊。另外,使用像Universal Image Loader這樣的方法在列表視圖中加載圖像