2011-02-10 8 views
0

私はいくつかのリストビューを含むアプリケーションを持っています。リストビューには、イメージビューとテキストビューで構成される項目が含まれます。Android ListViewはインターネット経由で読み込んだ画像をミックスします

すべての画像のサムネイルは、サーバとそれらをロードするために使用されるパターンに大きさで、このようなものです:

  • インスタンス化GetViewメソッドでDrawableManager
  • 私は、次の 1を行う)親指のURIを渡しますImageViewインスタンスをdrawablemanagersのgetImageAsyncメソッド に変換します。1.2)このメソッドは、SDカードから読み込み、softreference + update imageviewドロワブルを保存すると、画像が存在する場合は最初にsdカードを探します。 1.2)sdに存在しない場合。 HTTPからフェッチし、SD(十分なスペースがある場合)に保存して、softreferenceとして置いて、imageview drawableを更新します。

イメージがsdカード上に存在すると、すべて正常に動作します。しかし、初めて(またはSDカードなしでアプリを使用している場合)、画像はスクロールするときに間違ったリストビューの行に挿入されているようです。私がスクロールを停止すると、問題は数秒後に自動的に修正されます。

ImageViewの参照がプールされているかのような感じです。

アイデア?

私はまた、GetViewメソッドが含ま:

public View getView(int position, View convertView, ViewGroup parent) { 
        ViewHolder vh; 
        if (convertView == null) { 
         convertView = inflater.inflate(R.layout.informationrow, null); 
         vh = new ViewHolder(); 
         vh.imageView = (ImageView) convertView.findViewById(R.id.rowInformationIcon); 
         vh.textView = (TextView) convertView.findViewById(R.id.rowInformationTitleLine); 
         convertView.setTag(vh); 
        } 
        else 
        { 
         vh = (ViewHolder) convertView.getTag(); 
        } 

        CustomCategory cc = items.get(position); 
        if (cc != null) { 
         vh.textView.setText(cc.get_name()); 
         if (cc.getMediaUrl() != null) { 
          _drawMgr.fetchDrawableOnThread(cc.getMediaUrl(), vh.imageView); 
          vh.imageView.setBackgroundDrawable(getResources().getDrawable(R.drawable.imageframe)); 
         } 
         else { 
          vh.imageView.setImageDrawable(getResources().getDrawable(R.drawable.trans4040)); 
          vh.imageView.setBackgroundDrawable(null); 
         } 
        } 

        return convertView; 
      } 

感謝を!

答えて

0

ヌルであっても、常にリスト内の各ビューに何かを設定する必要があると言った内容を読んでいます。だから、多分あなたはあなたの問題を解決する可能性がある

_drawMgr.fetchDrawableOnThread(cc.getMediaUrl(), vh.imageView);

vh.imageView.setImageDrawable(null); 

を追加した場合。ちょうど推測。

関連する問題