まず第一に、はい、私はこの質問を知っていますが、答えは役に立ちません。はい、「スクロール時に位置が変わる」問題は解決しますが、私の問題に対する最適な解決策ではありません。説明させてください...
だから、これは私のgetViewです:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
UnscaledImageView imageView;
if(convertView == null) {
imageView = new UnscaledImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(mIconSize, mIconSize));
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setImageResource(mThumbIds[position]);
} else {
imageView = (UnscaledImageView)convertView;
}
return imageView;
}
そして、一般的な解決策は、ステートメントimageView.setImageResource(mThumbIds[position]);
の外側と下に移動することです。if
しかし、これは別の問題を引き起こします...
お気づきかもしれませんが、私は のUnscaledImageView
代わりに を使用していImageView
ます。これは、必要に応じていくつかの追加オプションを使用してビットマップを手動でデコードするメソッドをImageView
オーバーライドした場所のカスタム サブクラスです。setImageResource()
手動デコードが問題の原因です。
setImageResource()
メソッドが 内にとどまる場合、if
問題ありません。ビットマップのデコードはビットマップに対して 1 回行われ (GridView の読み込み中)、スクロールはスムーズになります。しかし、画像はスクロールごとに異なる位置にジャンプします。
ただし、setImageResource()
メソッドが の外にあるif
場合、画像は別の位置にジャンプしませんが、すべての画像はスクロールごとに常にデコードされます。スクロールはぎこちなく、まったくスムーズではありません。
この問題を解決するにはどうすればよいですか? 何か案は?