ListView getChildAt为不可见元素提供NullPointer(Android)

时间:2014-04-29 14:59:24

标签: android listview nullpointerexception

当我从列表视图中选择其中一个在创建活动时不可见的项时,它会抛出一个异常,因为那些不可见的是null。如你所见,我已经知道为什么问题会给出异常,我会感谢给我提示解决它的问题。这是代码。

public void myFunction(View view) {
        int i, i2 = 0;
        // get the row the clicked button is in
        ListView lerroa = (ListView) view.getParent();
        i = lerroa.getPositionForView(view);
        System.out.println(i + 1);


        LinearLayout ll = (LinearLayout) lerroa.getChildAt(i);
        TextView pedido = (TextView) ll.getChildAt(0);
}

在单击的项目上获取textview的更简单方法是什么?

1 个答案:

答案 0 :(得分:6)

我已经解决了这个问题。

为了显示列表视图中不可见的项目,导致NullPointers的项目,我已经替换了崩溃应用程序的代码行。这是:

替换:

LinearLayout ll = (LinearLayout) lerroa.getChildAt(i);

对于这个:

LinearLayout ll = (LinearLayout) lerroa.getChildAt(i -lerroa.getFirstVisiblePosition()).findViewById(R.id.LinearLayout3);

getVisiblePosition允许我们使用LinearLayout中显示的第一个项目,因此避免任何NullPointer。

我知道这有点粗制滥造,这不是编码我想要实现的最佳方式。尽管如此,我在互联网上看到了很多次同样的错误,但没有任何正确的answare。我希望这对其他人有用。

有一个很好的代码!