正如标题所示,当我尝试在 ListView 上滚动时,我的应用程序目前崩溃了。打开 ListView 时,一切都按预期工作,但一旦向下滚动,它就会崩溃。
ListView 包含在一个对话框中;下面的代码 fragment 显示了我如何初始化对话框和数组适配器:
final Dialog startersDialog = new Dialog(context);
startersDialog.setContentView(R.layout.starters_dialog);
startersDialog.setTitle("Select Starter");
convStarters = (ListView) startersDialog.findViewById(R.id.scenarios);
greetingsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, chatBot.getGreetingsInputs());
convStarters.setAdapter(greetingsAdapter);
当我选择列表项时调用的代码:
convStarters.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long arg3) {
userInput = adapter.getItemAtPosition(position).toString();
System.out.println("User Input Variable is: ");
userInputView.setText(userInput);
userInputView.setFocusable(false);
startersDialog.dismiss();
}
}
);
对话框 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/scenarios"/>
我得到的错误是:
02-24 16:59:16.914 17612-17612/com.example.alex.projectui E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.alex.projectui, PID: 17612
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
at android.widget.AbsListView.obtainView(AbsListView.java:2823)
at android.widget.ListView.makeAndAddView(ListView.java:1884)
at android.widget.ListView.fillDown(ListView.java:713)
at android.widget.ListView.fillGap(ListView.java:677)
at android.widget.AbsListView.trackMotionScroll(AbsListView.java:7040)
at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:6478)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
at android.view.Choreographer.doCallbacks(Choreographer.java:590)
at android.view.Choreographer.doFrame(Choreographer.java:559)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5942)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
如果问题相当简单,我深表歉意,但过去几天我一直在努力解决这个问题,但我找不到任何明显或易于理解的资源来处理此类问题。
提前致谢。非常感谢任何回复。
最佳答案
检查来自 chatBot.getGreetingsInputs()
的所有值。检查列表中是否没有空元素。
例如,在这个问题 Android App crashes after Scrolling down ListView 中,最后 2 条记录已损坏。
关于android - ListView 在滚动时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35608455/