アダプタの getView メソッドが複数回呼び出される理由はわかっていますが、返されたビューのどれが実際にアクティビティに表示されるかを知る方法はありますか?
これまで、返されたすべてのビューをリスト内の同じ位置にリンクし、表示されたビューを変更する必要があるたびに、その位置に対応するすべてのビューを変更しました (そのうちの 1 つが正しいものになります...)。確かに最善の方法ではありません...
ここに私のアダプターのコードがあります:
class MyAdapter extends BaseAdapter {
Vector<ImageView> vectorView[] = new Vector<ImageView>[25];
public MyAdapter(Activity context) {
...
}
public doSomeStuffOnAView(int position) {
// needs to know which view corresponds to the given position
// in order to avoid the following for cycle
for (ImageView iv: vector[position]) {
// do something
}
}
public View getView(int position, ...) {
ImageView childView = ...;
if (vector[position]==null) {
vector[position]=new Vector<ImageView>();
}
vector[position].add(childView);
return childView;
}
}
メソッドgetView(...)
は位置ごとに複数回呼び出される可能性がありますが、位置ごとに 1 つの返されたビューのみがアクティビティに表示されます。私はこれらのどれを知る必要があります。最後に getView が位置に対して呼び出されたときに返されたものだと思っていましたが、現在は常に true です。