从Firebase获取数据时获取Null指针异常

时间:2019-03-03 17:01:08

标签: java firebase firebase-realtime-database nullpointerexception recycler-adapter

我正在尝试通过loadData方法从firebase加载数据:

private void loadData(int getTypeOfSelection) {

    final TextView empty_view = (TextView) findViewById(R.id.empty_view);

    mFirebaseDatabase = FirebaseDatabase.getInstance();
    mMessagesDatabaseReference = mFirebaseDatabase.getReference().child("posts");

    Query queryNothing = mMessagesDatabaseReference; 

    progressBar.setVisibility(View.VISIBLE);
    empty_view.setVisibility(View.INVISIBLE);

    //Nothing is entered
    queryNothing.addListenerForSingleValueEvent(new ValueEventListener() {

        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                for (DataSnapshot d : dataSnapshot.getChildren()) {
                    // Get the value from the DataSnapshot and add it to the item list
                    post itemObject = dataSnapshot.getValue(post.class);

                    //this is where data from database is entered into a list of objects
                    if (dataSnapshot.getChildrenCount() > 0 && Float.parseFloat(itemObject.getminPack()) >= sal_ary) {

                        //all fields are empty
                        if (fie_ld.isEmpty() && loc_ation.isEmpty() && com_pany.isEmpty()) {
                            itemList.add(itemObject);
                            flag = 1;
                        }

                        //if location is entered
                        if (fie_ld.isEmpty() && !loc_ation.isEmpty() && com_pany.isEmpty()) {
                            if (itemObject.getLocation().equals(loc_ation.toLowerCase().trim())) {
                                itemList.add(itemObject);
                                flag = 2;
                            }
                        }

                        //Company is entered
                        if (fie_ld.isEmpty() && loc_ation.isEmpty() && !com_pany.isEmpty()) {
                            if (itemObject.getCompany().contains(com_pany.trim())) {
                                itemList.add(itemObject);
                                flag = 3;
                            }
                        }

                        //Location and company are entered
                        if (fie_ld.isEmpty() && !loc_ation.isEmpty() && !com_pany.isEmpty()) {
                            if (itemObject.getLocation().equals(loc_ation.toLowerCase().trim()) && itemObject.getCompany().contains(com_pany.trim())) {
                                itemList.add(itemObject);
                                flag = 4;
                            }
                        }

                        //Field is entered
                        if (!fie_ld.isEmpty() && loc_ation.isEmpty() && com_pany.isEmpty()) {
                            if (itemObject.getField().equals(fie_ld.trim())) {
                                itemList.add(itemObject);
                                flag = 5;
                            }
                        }

                        //Field and Location are entered
                        if (!fie_ld.isEmpty() && !loc_ation.isEmpty() && com_pany.isEmpty()) {
                            if (itemObject.getField().equals(fie_ld.trim()) && itemObject.getLocation().equals(loc_ation.toLowerCase().trim())) {
                                itemList.add(itemObject);
                                flag = 6;
                            }
                        }

                        //Field and Company are entered
                        if (!fie_ld.isEmpty() && loc_ation.isEmpty() && !com_pany.isEmpty()) {
                            if (itemObject.getField().equals(fie_ld.trim()) && itemObject.getCompany().contains(com_pany.trim())) {
                                itemList.add(itemObject);
                                flag = 7;
                            }
                        }

                        //If all three are entered
                        if (!fie_ld.isEmpty() && !loc_ation.isEmpty() && !com_pany.isEmpty()) {
                            if (itemObject.getField().equals(fie_ld.trim()) && itemObject.getLocation().equals(loc_ation.toLowerCase().trim()) && itemObject.getCompany().contains(com_pany.trim())) {
                                itemList.add(itemObject);
                                flag = 8;
                            }
                        }

                        if (flag == 0) {
                            mListView.setVisibility(View.GONE);
                            empty_view.setVisibility(View.VISIBLE);
                            progressBar.setVisibility(View.GONE);
                        }

                        mListView.setAdapter(new postAdapter(MainActivity.this, itemList));
                        totalChild = dataSnapshot.getChildrenCount();
                        progressBar.setVisibility(View.GONE);

                    }

                    else {
                        mListView.setVisibility(View.GONE);
                        empty_view.setVisibility(View.VISIBLE);
                        progressBar.setVisibility(View.GONE);
                    }
                }
            } else {
                Toast.makeText(MainActivity.this, "Database empty", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

这是警告:

enter image description here

运行时出现错误:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.referral.abhin.myapplication, PID: 11648
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838)
    at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
    at java.lang.Float.parseFloat(Float.java:452)
    at com.referral.abhin.myapplication.MainActivity$5.onDataChange(MainActivity.java:382)
    at com.google.firebase.database.zzp.onDataChange(Unknown Source:7)
    at com.google.android.gms.internal.firebase_database.zzfc.zza(Unknown Source:13)
    at com.google.android.gms.internal.firebase_database.zzgx.zzdr(Unknown Source:2)
    at com.google.android.gms.internal.firebase_database.zzhd.run(Unknown Source:71)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:192)
    at android.app.ActivityThread.main(ActivityThread.java:6671)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:818)

数据库:

enter image description here

我该怎么做才能克服此错误?

0 个答案:

没有答案
相关问题