0

LinearLayout を使用して ImageView と TextView のリストを取得したとします。今私は単純な ArrayAdapter 拡張機能を使用しており、Strig[][] をダブル文字列の配列であるアイテムとして取得します (各エントリには String[2] が含まれ、最初の文字列は画像への uri で、2 番目の文字列はテキストです。もちろん、 getView をオーバーライドして画像とテキストを表示し、ビューをリサイクルします:-)。ただし、リソースからでも画像の読み込みが遅い可能性があるため、非同期タスクで実行しています。つまり、デフォルトの画像が読み込まれており、次を使用します: ImageView と Uri を賭ける startLoading (私のメソッドです)画像の準備ができて、画像ビューに配置されます。

ただし、画像がまだロードされておらず、プロセスの途中にある場合はリストであるため、ロードを停止する価値があります。これは、画像をロードしている行が表示されなくなった場合です。

ビューがリサイクルされるため、ImageView が表示されている可能性があるため表示されているかどうかを確認できませんが、別の Drawable を使用しています...ある時点で、自分の行が無効になって表示されていないことを知る方法はありますか? 私の行がもはや有効ではないことを発見するために、フラグやタグパターンなどを使い始める必要がある簡単な方法やシェルはありますか?

4

1 に答える 1

1

私がしていることは、ListViewがそのビューを管理する方法に基づいています。

ListViewで実際に使用されるビューのセットは限られており、getView()メソッドのconvertView引数を介してアダプターに渡される可能性があるため、次のように実装しました。

  • ロードするURIを格納するLinkedListクラスメンバーがあります。これらのURIは、写真を取得するためにAsyncTaskメンバーで消費されます。
  • getView()でアイテムビューを返す前に、アダプタはアイテムpicのUrinをView.setTag(Object)に配置します。
  • convertViewを再利用すると、そのコンテンツを再利用する前に、以前にView.getTag()を使用してリンクされていたURIを取得し、保留中のURILinkedListから対応する要素を削除します。
于 2010-09-26T15:38:00.367 に答える