からいくつかの画像と名前をダウンロードし、Collection
それらを に適用していGridView
ます。AsyncTask
正しく動作させるためにいくつかの問題に遭遇しました。1 つの URL から、画像と名前の 2 つの異なる値を返す必要があります。現時点では、すべてを正しくダウンロードして情報を myImageView
とTextView
に適用できますが、これを行う方法は my で呼び出している間のみ機能しますAdapter
。
問題:
AsyncTask
すべてをダウンロードするように設定すると、シーケンスの最初の値のみがViews
グリッドに適用されます。「artistImages」をログに記録すると、シーケンスの他の URL が何度も出力されます。なぜこれが起こるのかわかりませんが、URL からのデータは実際には私のAdapter
.
私が試したこと:
n回doInBackground()
実行するためにループを設定しようとしました。Iterator
シーケンスBoolean
の最初のセットのデータをすべてのViews
.
で設定してみましAdapter
たAsyncTask
。
新しいクラスを作成するのではなく、に新しいクラスをAsyncTask
設定しようとしました。Adapter
私は myと in myImageView
を設定しようとしました。onPostExecute()
Adapter
でさまざまなパラメーターを使用してみましたAsyncTask
。
私は機能的に実行でき、画像と名前が非同期に適用されるように、AsyncTask
私の に を設定しようとしました。Views
Iterator
ループの停止やAsyncTask
特定の時点での設定AsyncTaks
、GridView
または を使用した設定、および、、および一般Adapter
に関する多くの読み取りについて、多くの調査を行いました。Threads
Handlers
AsyncTask
これらの試みはすべて、シーケンスの最初のセットのみが使用されるか、何もダウンロードされず、適用されません。だから、私は myIterator
で myを使うのにかなり苦労していAsyncTask
ます。
これは、画像と名前をダウンロードするために使用しているコードです。getView
これは、メソッド my内で使用している限り機能しますAdapter
。
画像と名前のダウンロードに使用:
i++;
artistImage = Artist.getSimilar("Bon Iver", i, key);
new ArrayList<Artist>();
itr = artistImage.iterator();
while (itr.hasNext()) {
Artist temp = itr.next();
artistImages = ((ImageHolder) temp).getImageURL(ImageSize.MEGA);
artistName = ((MusicEntry) temp).getName();
}
すべてが何であるかを示すために:
private Iterator<Artist> itr;
private Collection<Artist> artistImage;
private String artistImages = null;
private String artistName = null;
private int i = 0;
AsyncTask:私はこれgetView
を自分のAdapter
.new loadImages().execute()
public class loadImages extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
try {
Thread.sleep(50);
for (int i = 0; i <= 10; i++) {
artistImage = Artist.getSimilar("Bon Iver", i, key);
new ArrayList<Artist>();
itr = artistImage.iterator();
while (itr.hasNext()) {
Artist temp = itr.next();
artistImages = ((ImageHolder) temp)
.getImageURL(ImageSize.MEGA);
artistName = ((MusicEntry) temp).getName();
}
}
} catch (Exception e) {
Log.i("images", e.getMessage());
}
return artistImages;
}
}
それで、これを正しく設定する方法がわからないので、助けを求める時が来ました. 試行錯誤のかなりの割合で失敗した後、プラス面として、アプリをより効率的にすることについて多くのことを学びました. アドバイスをいただければ幸いです。