2013-03-04 44 views
1

在我的定义适配器为我listview,我添加了一个动画这样的:滚动时调用getView。

 View lastAddedItem = parent.getChildAt(0); 
     if(lastAddedItem != null) { 
      Animation a = AnimationUtils.loadAnimation(c, R.anim.push); 
      lastAddedItem.startAnimation(a); 
     } 

本规范适用于动画列表中的第0项。当我滚动列表的时候也应用这个动画,当然滚动的时候列表必须再次呈现,但是有什么方法可以防止这种情况?请记住,请记住,此代码位于方法getView()

非常感谢!

+1

是否有一个原因,你不能只是检查'位置== 0'? – Geobits 2013-03-04 14:16:32

+0

嗯,我不太确定你的意思是?我必须抓住一个特定的'View'来应用动画。如果你可以发布一个例子,那会很棒。 – 2013-03-04 14:18:17

+0

我没有测试它,可能听起来很朴素,但为什么你只是不在动画之前放置一个布尔值,并让它通过一次? – Rigotti 2013-03-04 14:20:15

回答

0

如果您希望它在第0项上运行动画,您应该可以检查getView()附带的position变量。如果它是0,请在提供的View上运行动画。

编辑:为每条评论添加了一个布尔标志。

boolean isFirstRun = true; 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if(convertView == null) { 
     // init view 
     ... 
    } 
    // populate view 
    ... 

    if(position == 0 && isFirstRun) { 
     isFirstRun = false; 
     // do animation stuff to convertView 
     // this will be the 0th item 
     ... 
    } 
} 
+0

谢谢你。动画看起来好一点,但是当我从底部到顶部的时候,列表中的第一项会有一个信息。而当列表视图不可滚动时,项目将随机生成动画。 – 2013-03-04 14:26:37

+2

哦,我以为你希望它在任何时候都能看到视图。此外,您可以使用布尔值来修复它。一秒钟更新代码。 – Geobits 2013-03-04 14:28:30

+0

我想我们误解了对方一点。我试图只在添加一个项目时动画“视图”。不是当我滚动列表。感谢您一直以来的帮助! – 2013-03-04 14:37:50