リストビューを埋めようとしています。リスト ビューのすべてのアイテムには、テキスト (タイトル) と画像 (サムネイル) が含まれています。私の画像はサーバーからダウンロードされます。そのため、リスト ビューにアイテムを追加するたびに、イメージが既に存在するかどうかを確認し、存在しない場合は非同期タスクでダウンロードします。非同期タスクの実行が終了したら、ダウンロードしたイメージをアイテム リスト ビューに配置します。
private class Thumbnails extends AsyncTask<Void, Integer, Void>
{
private Bitmap bitmap;
private File fileTest;
private String extStorageDirectory;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Integer... values){
super.onProgressUpdate(values);
}
@Override
protected Void doInBackground(Void... arg0) {
Log.i("DocumentListItem","start downloading thumbnail = "+thumbnailURL);
try{
extStorageDirectory = Environment.getExternalStorageDirectory().toString();
fileTest = new File(extStorageDirectory+"/AAAA/"+mDocument.getTitle());
if(fileTest.exists()){
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
bitmap = BitmapFactory.decodeFile(fileTest.getAbsolutePath(), options);
}
else{
bitmap = BitmapFactory.decodeStream(new URL(thumbnailURL).openConnection().getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
if (bitmap != null){
bitmapThumbnail = bitmap;
mImage.setImageBitmap(bitmap);
}
if(fileTest.exists()){
}else{
try {
File folder = new File(extStorageDirectory, "AppoxySavedFiles");
folder.mkdir();
File file = new File(folder, mDocument.getTitle());
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
問題は、表紙の画像のサムネイルがランダムに読み込まれ、適切なドキュメント アイテムに適切に関連付けられないことです。上下にスクロールすると、サムネイルが再配置されます。
誰が何が間違っているのか考えていますか?