0
我正在学习StackView和AdapterViewAnimator。 并发现,在AdapterViewAnimator中,它不会直接删除子项,而是将它们放入数组中, 并在下一阶段删除。为什么AdapterViewAnimator在两个阶段中删除儿童?
有人能解释一下这个设计的原因是什么? 为什么我不能直接删除它们?
的更多信息: 我也注意到, 由于上述设计, StackView(延伸AdapterViewAnimator) 都会有一些孩子流连忘返...... 并导致我想问问为什么。
的更多信息:下面 是代码片段,我上面提到: (从AdapterViewAnimator.showOnly(INT,布尔值))
// 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, Henry