我已将数据从 firestore 加载到 Searchable Spinner,但过滤 searchablespinner 的结果使我的应用程序崩溃

I have loaded data into Searchable Spinner from firestore but filtering the results of searchablespinner is crashing my app

我的 firestore 数据库中的数据已成功加载到我的可搜索微调器中,但在尝试过滤我的项目时(即,在搜索可搜索微调器时),我的应用程序崩溃了。 First Screenshot Image

从上图中我们可以清楚地看到可搜索微调器正在从我的云 firestore 数据库中填充。

到目前为止一切正常,数据从 firestore 正确加载并且一切似乎都表现良好,直到 Second Screenshot Image

只要我在可搜索微调器的搜索视图中键入我的第一个字母,我的应用程序就会崩溃,如上面的屏幕截图所示

代码:

parties=new ArrayList<>();
    arrayAdapter = new ArrayAdapter<String>(cartActivity.this, android.R.layout.simple_list_item_1, parties);
    arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    searchableSpinner.setAdapter(arrayAdapter);
    db.collection("/RootCollection/partyDocument/partyCollection")
            .get()
            .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                    for(QueryDocumentSnapshot documentSnapshot:queryDocumentSnapshots){
                            partyMaster pm=documentSnapshot.toObject(partyMaster.class);
                            parties.add(pm.getName());
                            arrayAdapter.notifyDataSetChanged();
                            /*Object objectName=documentSnapshot.get("name");
                            String partyName=objectName.toString();
                            parties.add(partyName);*/
                    }

                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(cartActivity.this,"Error ",Toast.LENGTH_SHORT).show();
                }
            });

这部分是我从 logcat 的详细信息中得到的,表明存在空指针异常(但我已经正确初始化了我的数组列表)

LOGCAT:

--------- beginning of crash
06-11 15:58:42.244 8801-8801/com.example.user1.salesmanapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.user1.salesmanapp, PID: 8801
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
    at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:337)
    at android.widget.AdapterView.checkFocus(AdapterView.java:737)
    at android.widget.AdapterView$AdapterDataSetObserver.onInvalidated(AdapterView.java:860)
    at android.widget.AbsListView$AdapterDataSetObserver.onInvalidated(AbsListView.java:6749)
    at android.database.DataSetObservable.notifyInvalidated(DataSetObservable.java:50)
    at android.widget.BaseAdapter.notifyDataSetInvalidated(BaseAdapter.java:59)
    at android.widget.ArrayAdapter$ArrayFilter.publishResults(ArrayAdapter.java:546)
    at android.widget.Filter$ResultsHandler.handleMessage(Filter.java:282)
    at android.os.Handler.dispatchMessage(Handler.java:111)
    at android.os.Looper.loop(Looper.java:207)
    at android.app.ActivityThread.main(ActivityThread.java:5740)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:766)

提前致谢

您收到错误消息是因为您试图用空列表填充适配器,因为您没有向适配器再次添加或设置参与方列表。

您可以使用以下代码:

    db.collection("/RootCollection/partyDocument/partyCollection")
            .get()
            .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                    parties=new ArrayList<>();
                    for(QueryDocumentSnapshot documentSnapshot:queryDocumentSnapshots){
                            partyMaster pm=documentSnapshot.toObject(partyMaster.class);
                            parties.add(pm.getName());

                    }

                    arrayAdapter = new ArrayAdapter<String>(cartActivity.this,
                    android.R.layout.simple_list_item_1,parties);

                    arrayAdapter.
               setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    searchableSpinner.setAdapter(arrayAdapter);

                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(cartActivity.this,"Error ",Toast.LENGTH_SHORT).show();
                }
            });