如何判断ListView数据内容项是第一次出现

google+的列表界面中,如果一个卡片内容是第一次出现,则会有一个向上缓慢冒进的效果,如果来回滑动,之前已经显示过的内容便不再有动画效果,这是如何判断的呢?

在adapter中声明一个记录最后一次position的变量,初始化为-1

private int mLastAnimatedPosition = -1;

根据getView中的position判断是否大于mLastAnimatedPosition,如果大于mLastAnimatedPosition则需要动画 同时将mLastAnimatedPosition更新为最近的position

private void animateViewIfNecessary(final int position, final View view, final ViewGroup parent) {
    if (position > mLastAnimatedPosition) {
        animateView(parent, view);
        mLastAnimatedPosition = position;
    }
}