ListViewにアダプタを持つアイテムを表示したいのですが、getViewがArrayAdapterで呼び出されたときに、スクロールしても良いイメージは表示されますが、正常なアイテムは表示されません。 findViewByIdが私にレイアウトの良いIDを与えていないかのようです。Android ListView getView表示イメージをランダムに
if(pack.getImageName().equals("null")){
holder.imageView.setImageBitmap(null);
}
しかし、私はListViewコントロールにスクロールしていたとき、私は間違った項目に画像を見ることができる、と私がgetViewメソッドを呼び出すために再びスクロールする必要が:
public class ItemPackAdapter extends ArrayAdapter<Pack> {
Context context;
public ItemPackAdapter(Context context, ArrayList<Pack> pack) {
super(context, 0, pack);
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
// Check if an existing view is being reused, otherwise inflate the view
final Pack pack = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_pack, parent, false);
holder = new ViewHolder();
holder.textView1 = (TextView) convertView.findViewById(R.id.textView1);
holder.textView2 = (TextView) convertView.findViewById(R.id.textView2);
holder.textView3 = (TextView) convertView.findViewById(R.id.textView3);
holder.imageView = (ImageView) convertView.findViewById(R.id.imageView);
if (!pack.getImageName().equals("null")) {
UrlGenerator urlGenerator = new UrlGenerator();
String url = urlGenerator.getDownloadPicture(pack.getImageName());
DownloadPicture downloadPicture = new DownloadPicture(holder.imageView, url, getContext());
downloadPicture.start();
}
convertView.setTag(holder);
}
else {
holder = (ViewHolder)convertView.getTag();
}
holder.textView1.setText(pack.getSomething1());
holder.textView2.setText(pack.getSomething2());
holder.textView3.setText(pack.getSomething3());
if (!pack.getImageName().equals("null")) {
UrlGenerator urlGenerator = new UrlGenerator();
String url = urlGenerator.getDownloadPicture(pack.getImageName());
DownloadPicture downloadPicture = new DownloadPicture(holder.imageView, url, getContext());
downloadPicture.start();
}
if(pack.getImageName().equals("null")){
holder.imageView.setImageBitmap(null);
}
return convertView;
}
static class ViewHolder {
TextView textView1;
TextView textView2;
TextView textView3;
ImageView imageView;
}
}
は実際に私がして解決策を見つけました前の状態の画像を削除してください。 私は何かきれいにしたい:p
ありがとうございます。 そして、私の悪い英語を申し訳ありません。
問題は、ビューのリサイクルによるものです。この問題を避けるには、 'Picasso'や他のイメージローディングライブラリを使うことができます。 –