0

ListViewテキストと画像を含むアイテムを表示する必要があります。

データはローカルSQLitedbファイル(テキストと画像のURLを含む)からロードされます。

そうしたいです:

  • DBからテキストのURLを取得します。
  • URLから画像を非同期でダウンロードします
  • ListView両方の値を(を使用して)にバインドしますSimpleCursorAdapter

これまでのところ、DBから値を読み取ることができましたが、各イメージを正常にロードした後でのみバインドを実行する方法がわかりません。

つまり、適切なUIアイテムに読み込まれるときに、各要素を非同期的にバインドしたいと思います。

4

2 に答える 2

1

これは、このhttp://www.androidkit.com/loading-images-from-remote-server-over-http-on-a-separate-threadの方法を示す良い例です。

簡単に言えば、

1) が必要ですMap<Url, Bitmap>
2) サーバーからの画像データがまだ利用できない場合に表示されるデフォルトの画像を用意します。
3) の onScroll リスナーを用意してListView、現在表示されているアイテムを確認します。
4) まず、表示されているものをダウンロードします。
5) 画像がダウンロードされたら、notifyDataSetChanged()使用可能な画像をビューにバインドするために呼び出します。
6)使用SoftreferencesまたはLRUCache回避できますOutofMemoryException

于 2013-03-05T09:50:46.097 に答える
-1

これと同様の問題を解決しました。サーバーから XML を受け取り、その情報をデータベースに保存します。その後、CursorAdapter を使用してリストを作成しました。私の場合、画像とテキストの両方があります。

カーソル アダプタの問題を解決するために、次のようなことを行いました。

@Override
public void bindView(View v, Context ctx, Cursor c) {
    TextView title =  (TextView) v.findViewById(R.id.titleID);
    title.setText(c.getString(c.getColumnIndex(yourColumName)));
    ImageView i =  (ImageView) v.findViewById(R.id.ImageID); 
    String s = c.getString(c.getColumnIndex(youtImageColumn));
    imageLoader.DisplayImage(s,i);
}


@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    View v = inflater.inflate(R.layout.yourRowLayout, parent, false);
    return v;
}

この場合、ImageLoader は、 https ://github.com/thest1/LazyList から取得した非同期遅延イメージ ローダーです。

于 2013-03-05T10:20:03.633 に答える