私は StackView と AdapterViewAnimator を勉強しています。そして、AdapterViewAnimator では、子を直接削除するのではなく、配列に入れ、次のフェーズで削除することがわかりました。
誰かがこのデザインの理由を説明してもらえますか? それらを直接削除できないのはなぜですか?
詳細: 上記の設計により、StackView (AdapterViewAnimator を拡張する) にいくつかの子が残っていることにも気付きました...そして、理由を尋ねたいと思います。
詳細: 以下は、上記のコード スニペットです: ( AdapterViewAnimator.showOnly(int, boolean) から)
// This section clears out any items that are in our active views list
// but are outside the effective bounds of our window (this is becomes an issue
// at the extremities of the list, eg. where newWindowStartUnbounded < 0 or
// newWindowEndUnbounded > adapterCount - 1
for (Integer index : mViewsMap.keySet()) {
boolean remove = false;
if (!wrap && (index < rangeStart || index > rangeEnd)) {
remove = true;
} else if (wrap && (index > rangeEnd && index < rangeStart)) {
remove = true;
}
if (remove) {
View previousView = mViewsMap.get(index).view;
int oldRelativeIndex = mViewsMap.get(index).relativeIndex;
mPreviousViews.add(index);
transformViewForTransition(oldRelativeIndex, -1, previousView, animate);
}
}
ありがとう。BR、ヘンリー