2015-09-14 126 views
0
  1. 我写了一个自定义ListView,名为MyListView。在这个自定义类,我有一个像下面的方法:Custom ListView view = getChildAt(0)throw NullPointerException

    public int getComputedScrollY() { 
    
        int pos, nScrollY, nItemY = 0; 
        View view = null; 
    
        // To get the first visible item position 
        pos = getFirstVisiblePosition(); 
    
        // get the item view whose position is 0 
        ***view = getChildAt(0);*** 
    
        if (view != null) { 
         nItemY = view.getTop(); 
        } 
    
        int totalOffset = 0; 
        for (int i = 0; i < pos; i++) { 
         totalOffset += mItemsHeight.get(i); 
        } 
        nScrollY = totalOffset - nItemY; 
        return nScrollY; 
    } 
    
  2. MyListView一个活动时,我第一次对其进行初始化,一切正常。

  3. 但是在我使用的应用程序很长一段时间,谁拥有MyListView活动,停留在停止状态(其onStop()被调用后)很长一段时间。然后我跳回到上面的代码,行view = getChildAt(0)将会抛出NullPointerException。这是第一种情况。

  4. 另一种情况是,当我使用其他活动并抛出任何异常时,应用程序将自动跳回到拥有MyListView的活动。那么上面的代码,同一行,view = getChildAt(0)也会抛出NullPointerException

我不知道为什么。

+1

请粘贴堆栈跟踪 –

+0

是的,请显示您的logcat。没有它,这是一个猜谜游戏。 – Sufian

回答

0

你滚动你的listview了吗?

当您向上滚动ListView并使您的活动停止时,当其他地方需要内存时系统可能会终止它?

+0

不,我没有滚动它。这是一个ListView,可以刷新。第一个视图是一个头,它是hiden.I不知道为什么getChildAt(0)方法返回null.I注意到也许这是记忆的问题,但我不知道如何处理它。 –

0

使用getFirstVisiblePosition()而不是0

相关问题