Android 如果不单击项目,则无法从listview中获取Child
我无法在ListView中运行动画。我可以在单击项目时设置它们的动画,但我正在尝试将我没有单击的项目设置为动画 我想我可能会让第二个动画在第一个动画之后简单地开始,但是即使在ListView最终完成之后,getChildAt和getChildCount在代码中调用它们的任何地方都会分别返回null和0,即使我将视图从单击发送到另一个方法 我重复一遍,除非调用另一个touch命令,否则getChildAt只会在代码中的任何地方返回null 如有任何建议,将不胜感激Android 如果不单击项目,则无法从listview中获取Child,android,listview,Android,Listview,我无法在ListView中运行动画。我可以在单击项目时设置它们的动画,但我正在尝试将我没有单击的项目设置为动画 我想我可能会让第二个动画在第一个动画之后简单地开始,但是即使在ListView最终完成之后,getChildAt和getChildCount在代码中调用它们的任何地方都会分别返回null和0,即使我将视图从单击发送到另一个方法 我重复一遍,除非调用另一个touch命令,否则getChildAt只会在代码中的任何地方返回null 如有任何建议,将不胜感激 @Override protec
@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();
}
`实现OnScrollListener
public class MainActivity extends Activity implements OnScrollListener {
并在listView中设置OnScrollListener
listView.setOnScrollListener(MainActivity.this);
您可以获得第一行和最后一行可见的内容
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
firstVisibleRow = listView.getFirstVisiblePosition();
lastVisibleRow = listView.getLastVisiblePosition();
/现在,您可以获得第一个和最后一个可见行,并且可以轻松地获得第一个到最后一个可见行的行,并将动画应用到可见行/
}
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));
}
}
我可以在更新ListAdapter时调用onScroll吗?我以前从未使用过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));
}
}