Android ListView throwning NullPointerException

Android ListView throwning NullPointerException,android,listview,Android,Listview,我有一个android应用程序,它从Web服务获取HTTP响应,我将其处理为字符串数组。然后我尝试在ListView中显示这些字符串。他们不需要点击任何行动,只是显示和滚动 运行时,一切正常,但当我尝试向下滚动超过必须显示的项目数量时(因为列表上没有更多的字符串可显示),我得到一个NullPointerException。显然我一定是做错了什么 我不太明白。我写了一个类似的例子作为测试,效果很好。示例中的列表仅在没有更多项目显示时滚动并停止。我能想到的唯一区别是,在原始应用程序上,数组是在线程上

我有一个android应用程序,它从Web服务获取HTTP响应,我将其处理为字符串数组。然后我尝试在ListView中显示这些字符串。他们不需要点击任何行动,只是显示和滚动
运行时,一切正常,但当我尝试向下滚动超过必须显示的项目数量时(因为列表上没有更多的字符串可显示),我得到一个NullPointerException。显然我一定是做错了什么
我不太明白。我写了一个类似的例子作为测试,效果很好。示例中的列表仅在没有更多项目显示时滚动并停止。我能想到的唯一区别是,在原始应用程序上,数组是在线程上创建的,而不是线程使用处理程序在gui上显示列表来运行runnable

当获取字符串并将其命令到数组以显示的线程完成时,他使用处理程序运行以下代码:

    scoreList = (ListView) findViewById(R.id.scorelist);
    ArrayAdapter<String> myAdapter =  new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,scoreResult);
    scoreList.setAdapter(myAdapter);
请检查一下有什么不好的地方

NullPointerException这是初学者程序员的标志:它不验证参数,他在一行中编写多个语句。在这种情况下,我会检查
scoresult
是否为空,但至少不为空

运行时,一切正常,但当我尝试向下滚动时 超出我必须展示的项目数量(因为没有 要在列表上显示的更多字符串)我得到一个NullPointerException。 显然我一定是做错了什么

该异常源于在传递给
ArrayAdapter
的列表/数组(
scoreResult
)中具有
null
值。这是因为默认情况下,
ArrayAdapter
将调用(在负责构建列表行的
getView
方法中)数据列表中每个项上的
toString
方法,如果该项的类型不是
CharSequence
(您有
String
),获取要在行中显示的项目的文本表示形式


因此,请检查
scoresult
列表/数组,确保其中没有
null
值。我看到您提到了数组,请确保数组大小与数据所需的大小相同,如果数组大于数据,则在其末尾将有
null
值。

检查xml文件中的id。列表视图应该有“得分列表”作为id。谢谢。我相信你是对的。scoreResult由值填充,但其长度大于实际值,因此其其余部分为null。我打赌这就是造成问题的原因。很明显。呸。谢谢
D/AndroidRuntime(  864): Shutting down VM
W/dalvikvm(  864): threadid=1: thread exiting with uncaught exception (group=0x4
001d800)
E/AndroidRuntime(  864): FATAL EXCEPTION: main
E/AndroidRuntime(  864): java.lang.NullPointerException
E/AndroidRuntime(  864):        at android.widget.ArrayAdapter.createViewFromRes
ource(ArrayAdapter.java:355)
E/AndroidRuntime(  864):        at android.widget.ArrayAdapter.getView(ArrayAdap
ter.java:323)
E/AndroidRuntime(  864):        at android.widget.AbsListView.obtainView(AbsList
View.java:1294)
E/AndroidRuntime(  864):        at android.widget.ListView.makeAndAddView(ListVi
ew.java:1727)
E/AndroidRuntime(  864):        at android.widget.ListView.fillDown(ListView.jav
a:652)
E/AndroidRuntime(  864):        at android.widget.ListView.fillGap(ListView.java
:623)
E/AndroidRuntime(  864):        at android.widget.AbsListView.trackMotionScroll(
AbsListView.java:2944)
E/AndroidRuntime(  864):        at android.widget.AbsListView.onTouchEvent(AbsLi
stView.java:2065)
E/AndroidRuntime(  864):        at android.widget.ListView.onTouchEvent(ListView
.java:3315)
E/AndroidRuntime(  864):        at android.view.View.dispatchTouchEvent(View.jav
a:3766)
E/AndroidRuntime(  864):        at android.view.ViewGroup.dispatchTouchEvent(Vie
wGroup.java:897)
E/AndroidRuntime(  864):        at android.view.ViewGroup.dispatchTouchEvent(Vie
wGroup.java:936)
E/AndroidRuntime(  864):        at android.view.ViewGroup.dispatchTouchEvent(Vie
wGroup.java:936)
E/AndroidRuntime(  864):        at android.view.ViewGroup.dispatchTouchEvent(Vie
wGroup.java:936)
E/AndroidRuntime(  864):        at com.android.internal.policy.impl.PhoneWindow$
DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
E/AndroidRuntime(  864):        at com.android.internal.policy.impl.PhoneWindow.
superDispatchTouchEvent(PhoneWindow.java:1107)
E/AndroidRuntime(  864):        at android.app.Activity.dispatchTouchEvent(Activ
ity.java:2086)
E/AndroidRuntime(  864):        at com.android.internal.policy.impl.PhoneWindow$
DecorView.dispatchTouchEvent(PhoneWindow.java:1655)
E/AndroidRuntime(  864):        at android.view.ViewRoot.handleMessage(ViewRoot.
java:1785)
E/AndroidRuntime(  864):        at android.os.Handler.dispatchMessage(Handler.ja
va:99)
E/AndroidRuntime(  864):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  864):        at android.app.ActivityThread.main(ActivityThrea
d.java:4627)
E/AndroidRuntime(  864):        at java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime(  864):        at java.lang.reflect.Method.invoke(Method.java:5
21)
E/AndroidRuntime(  864):        at com.android.internal.os.ZygoteInit$MethodAndA
rgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(  864):        at com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:626)
E/AndroidRuntime(  864):        at dalvik.system.NativeStart.main(Native Method)

W/ActivityManager(   59):   Force finishing activity memo.ori.friend/.Highscores

W/ActivityManager(   59): Activity pause timeout for HistoryRecord{4503fed0 memo
.ori.friend/.Highscores}
W/WindowManager(   59): No window to dispatch pointer action 1
W/ActivityManager(   59): Launch timeout has expired, giving up wake lock!
W/ActivityManager(   59): Activity idle timeout for HistoryRecord{45023af0 memo.
ori.friend/.MemoFriendActivity}
D/dalvikvm(  261): GC_EXPLICIT freed 45 objects / 2128 bytes in 108ms
W/ActivityManager(   59): Activity destroy timeout for HistoryRecord{4503fed0 me
mo.ori.friend/.Highscores}
D/SntpClient(   59): request time failed: java.net.SocketException: Address fami
ly not supported by protocol
I/Process (  864): Sending signal. PID: 864 SIG: 9
I/ActivityManager(   59): Process memo.ori.friend (pid 864) has died.
I/WindowManager(   59): WIN DEATH: Window{45077ce0 memo.ori.friend/memo.ori.frie
nd.MemoFriendActivity paused=false}
I/WindowManager(   59): WIN DEATH: Window{4507cf60 memo.ori.friend/memo.ori.frie
nd.Highscores paused=false}
I/UsageStats(   59): Unexpected resume of com.android.launcher while already res
umed in memo.ori.friend
W/InputManagerService(   59): Got RemoteException sending setActive(false) notif
ication to pid 864 uid 10044
W/IInputConnectionWrapper(  126): showStatusIcon on inactive InputConnection
D/SntpClient(   59): request time failed: java.net.SocketException: Address fami
ly not supported by protocol
request time failed: java.net.SocketException: Address fami
ly not supported by protocol