GridViewのgetView()メソッドで、次のことを行っています。
public View getView(int position, View convertView, ViewGroup parent) {
convertView = this.inflater.inflate(..);
ImageView image = (ImageView) convertView
.findViewById(R.id.imageButton1);
imageLoader.displayImage("URL/"
+ sampleArray.get(position), image);
ここでのsampleArrayは、アダプタの作成時にロードした配列です。これは、これらの画像を遅延読み込みするときに使用され(このツール:https ://github.com/nostra13/Android-Universal-Image-Loader )、基本的に、読み込む画像を決定する画像URLの一部です。さて、私が知る限り、ベストプラクティスは、ビューがnullの場合にのみビューを膨らませることです。
if(convertView == null){
this.inflater.inflate(...);
これを行うと、実際には高速になりますが、画像の読み込みがおかしいです。下にスクロールして上にスクロールすると、画像が行内で切り替わります。つまり、一番上の行では、1列目の画像が2列目の画像にランダムに切り替わる可能性があります。私が使用している配列(sampleArray)は変更されません。呼び出されるpositionとgetView()と関係があることは知っていますが、なぜこの動作が発生するのかわかりません。
現在の方法(コードの最初のブロック)で実行すると、毎回膨張します。完全に機能しますが、読み込みが遅くなります。この動作がこのように機能するのはなぜですか?
前もって感謝します。
編集:
これが私が起こっていると思うことです。GetView()が複数回呼び出されていますが、これは「position」引数と同期していないため、配列から間違った要素が選択されています。私はまだそれに戸惑っています。