我有一个ListView,它在视图中一次最多显示四个项目。如果列表中有更多项目,那么它会自动转换为可滚动列表。
现在我将该列表的选择模式更改为单个:
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
因此用户可以选择单个项目。选择项目后,用户需要单击按钮。
现在当列表最多4个项目时,一切正常。随着列表中添加更多项目,我在此行有一个NullPointerException错误:
String s = ((TextView) lv.getChildAt(p)).getText().toString();
这是按钮的OnClick方法的完整代码:
@Override
public void onClick(View v) {
int p = lv.getCheckedItemPosition();
if(p>=0){
String s = ((TextView) lv.getChildAt(p)).getText().toString();
}
}
完整堆栈跟踪:
03-29 23:00:07.424: E/AndroidRuntime(334): FATAL EXCEPTION: main
03-29 23:00:07.424: E/AndroidRuntime(334): java.lang.NullPointerException
03-29 23:00:07.424: E/AndroidRuntime(334): at com.username.appname.activityname.onClick(ActivityName.java:48)
03-29 23:00:07.424: E/AndroidRuntime(334): at android.view.View.performClick(View.java:2485)
03-29 23:00:07.424: E/AndroidRuntime(334): at android.view.View$PerformClick.run(View.java:9080)
03-29 23:00:07.424: E/AndroidRuntime(334): at android.os.Handler.handleCallback(Handler.java:587)
03-29 23:00:07.424: E/AndroidRuntime(334): at android.os.Handler.dispatchMessage(Handler.java:92)
03-29 23:00:07.424: E/AndroidRuntime(334): at android.os.Looper.loop(Looper.java:123)
03-29 23:00:07.424: E/AndroidRuntime(334): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-29 23:00:07.424: E/AndroidRuntime(334): at java.lang.reflect.Method.invokeNative(Native Method)
03-29 23:00:07.424: E/AndroidRuntime(334): at java.lang.reflect.Method.invoke(Method.java:507)
03-29 23:00:07.424: E/AndroidRuntime(334): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-29 23:00:07.424: E/AndroidRuntime(334): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-29 23:00:07.424: E/AndroidRuntime(334): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
为什么不为ListView创建onitemclicklistener,以及单击该项目时。将该项目存储为String,然后在按下按钮时调用该项目?