将视图添加到滚动视图时出现空指针异常

时间:2013-07-25 16:59:56

标签: java android android-layout

好的,所以我创建了一个带有几个布局和textview的自定义视图。我创建了一个动态创建视图的对象。下面是创建视图的代码并设置TextViews ....

    inflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
    View layout = inflater.inflate(R.layout.run_info_layout, null);

    TextView infoP, in;
    infoP = (TextView) layout.findViewById(R.id.tvInfoParameter);
    in = (TextView) layout.findViewById(R.id.tvInfo);

    infoP.setText(ip);
    in.setText(i); 

在一项活动中,我让它使用此代码创建其中一些对象....

    runInfo.add(new RunInfoLayout("Final Time", run.getTime(), RunEnding.this));
    runInfo.add(new RunInfoLayout("Distance", Float.toString(run.getDistance()), RunEnding.this));
    runInfo.add(new RunInfoLayout("Started", run.getBTime(), RunEnding.this));
    runInfo.add(new RunInfoLayout("Ended", run.getETime(), RunEnding.this));
    runInfo.add(new RunInfoLayout("Number of laps", Integer.toString(numberOfLaps), RunEnding.this));

我有一个遍历runInfo的循环,它是一个ArrayList并将视图添加到ScrollView .....

    for(int x = 0; x < runInfo.size(); x++){
        llRunInfo.addView(runInfo.get(x).getView());
    }

llRunInfo是ScrollView中的LinearLayout。 getView()方法只返回它在早期代码中创建的视图。问题出在addView()行。我在那里得到一个nullPointerException。这是logcat ....

07-25 12:42:25.223: E/AndroidRuntime(31056): Caused by: java.lang.NullPointerException
07-25 12:42:25.223: E/AndroidRuntime(31056):    at android.view.ViewGroup.addView(ViewGroup.java:3148)
07-25 12:42:25.223: E/AndroidRuntime(31056):    at android.view.ViewGroup.addView(ViewGroup.java:3131)
07-25 12:42:25.223: E/AndroidRuntime(31056):    at com.TBJsoft.runprogress.RunEnding.build(RunEnding.java:55)

1 个答案:

答案 0 :(得分:0)

我不太清楚为什么你会看到NullPointer,请记住ScrollView只能有一个孩子。

出于好奇,你为什么要手工做这一切?为什么不在ArrayAdapter中拥有ListView?您仍然可以将自定义视图用作ArrayAdapter的自定义视图,但这样您就可以ListView处理您的视图回收 - 我认为您可以使用自定义视图。如果不在addView中处理自己的ScrollView,那么当数据集增长时,您可能会遇到一些内存和滚动问题。