我无法让我的动画在我的ListView中工作。当我点击它们时,我可以获得动画项目,但我正在尝试获取我不仅仅点击动画的项目。
我想我可能会在第一个动画之后简单地启动第二个动画,但是即使在完成ListView后,getChildAt和getChildCount分别返回null和0,我在代码中调用它们,即使我发送了来自点击另一种方法。
我再说一遍,getChildAt()只是在我的代码中的其他地方返回null,除非我调用另一个触摸命令。
任何建议都将不胜感激
@Override
protected void onListItemClick(ListView l, final View v, int position, long id) {
int count = l.getChildCount();
int one = l.getLastVisiblePosition();
int two = l.getFirstVisiblePosition();
Message.message(this, one+" and " +two);
Message.message(this, ""+count);
v.setHasTransientState(true);
ObjectAnimator anim = ObjectAnimator.ofFloat(v, View.TRANSLATION_X, 0, 100);
anim.setDuration(1000);
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
swipeOnDoneButtonClick(v);
View first = l.getChildAt(0);
first.setHasTransientState(true);
ObjectAnimator animator = ObjectAnimator.ofFloat(first, View.TRANSLATION_X, 0, 100);
animator.setDuration(1000);
animator.start();
}
});
anim.start();
}
`
答案 0 :(得分:0)
实现OnScrollListener
public class MainActivity extends Activity implements OnScrollListener {
并在listView
中设置OnScrollListenerlistView.setOnScrollListener(MainActivity.this);
您可以获得第一个和最后一个可见行
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
firstVisibleRow = listView.getFirstVisiblePosition();
lastVisibleRow = listView.getLastVisiblePosition();
/ 现在您获得了第一个和最后一个可见行,并且您可以轻松地从第一个到最后一个可见行和appy动画获取行到可见行..,。 / }
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}
onScroll中的代码
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
int firstVisibleRow = listView.getFirstVisiblePosition();
int lastVisibleRow = listView.getLastVisiblePosition();
for(int i=firstVisibleRow;i<=lastVisibleRow;i++)
{
//Write your code here(allocation/deallocation/store in array etc.)
System.out.println(i + "=" + listView.getItemAtPosition(i));
}
}