Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果不单击项目,则无法从listview中获取Child_Android_Listview - Fatal编程技术网

Android 如果不单击项目,则无法从listview中获取Child

Android 如果不单击项目,则无法从listview中获取Child,android,listview,Android,Listview,我无法在ListView中运行动画。我可以在单击项目时设置它们的动画,但我正在尝试将我没有单击的项目设置为动画 我想我可能会让第二个动画在第一个动画之后简单地开始,但是即使在ListView最终完成之后,getChildAt和getChildCount在代码中调用它们的任何地方都会分别返回null和0,即使我将视图从单击发送到另一个方法 我重复一遍,除非调用另一个touch命令,否则getChildAt只会在代码中的任何地方返回null 如有任何建议,将不胜感激 @Override protec

我无法在ListView中运行动画。我可以在单击项目时设置它们的动画,但我正在尝试将我没有单击的项目设置为动画

我想我可能会让第二个动画在第一个动画之后简单地开始,但是即使在ListView最终完成之后,getChildAt和getChildCount在代码中调用它们的任何地方都会分别返回null和0,即使我将视图从单击发送到另一个方法

我重复一遍,除非调用另一个touch命令,否则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();



}

`实现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));
    }
}