无法点击项目,无法从listview获取孩子

时间:2015-02-16 03:04:34

标签: android listview

我无法让我的动画在我的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();



}

`

1 个答案:

答案 0 :(得分:0)

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

/ 现在您获得了第一个和最后一个可见行,并且您可以轻松地从第一个到最后一个可见行和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));
    }
}