0

私はこれでアダプタを使用しますListViewの実装です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;


}

にセットBitmapすると滑らかになりませんImageViewListView

に正しいコードを実装していますgetViewか?

4

2 に答える 2

0

convertView.setTag(viewHolder)if ブロックに: を追加してみてください。また、リスト ビューで画像を読み込むには、Universal Image Loaderのような方法を使用します。

于 2013-10-10T19:34:19.097 に答える
0

この単純なコードを見て、ホルダーパターンの単純な実装をどのように使用できるかを見てください。

開始時に Integer.toString または何かを使用しないでください

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

setImage... を使用すると、getView が複数回呼び出されます。

なぜあなたはそれがnullであり、それを使用するのが1行速いのかをチェックしていますか? も意味ない。

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

そして、View this code にホルダーを設定しないで最も重要なことは、あなたのためにクラッシュしませんか?

トピックを見てください:

getView が複数回呼び出された遅延読み込み getView が複数回 呼び出された 2

于 2013-02-03T11:35:18.680 に答える