2013-01-01 125 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这样的方法在列表视图中加载图像