Android 如何在没有设置值的情况下获取Firebase数据库整个节点?

Android 如何在没有设置值的情况下获取Firebase数据库整个节点?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在尝试从Firebase数据库中获取整个节点,而不使用setValue。我在谷歌上得到了各种各样的代码,但都不起作用。这是我的JSON: myAppInfo.json { "AppInfo" : { "AppName" : "MyDemo1", "VersionName" : "1.0", "VersionCode" : "1.1" } } 火基测试方法 public void App

我正在尝试从Firebase数据库中获取整个节点,而不使用
setValue
。我在谷歌上得到了各种各样的代码,但都不起作用。这是我的JSON:

myAppInfo.json

    {
      "AppInfo" : {

          "AppName" : "MyDemo1",
          "VersionName" : "1.0",
          "VersionCode" : "1.1"
        }
    }
火基测试方法

public void AppversionCheck() {

    Log.v(Constants.TAG, "AppversionCheck ");

    //String UserId = ref.child("AppInfo").push().getKey();
    ref = new Firebase(Config.FIREBASE_URL);

    //AppInfo appInfo = new AppInfo();
    //appInfo.setAppName("AppInfo");
    //ref.child("AppInfo").child("AppName").setValue("App1");
    ref.child("AppInfo")./*child(UserId).*/child("AppName").setValue("App1");
    //mDatabase = FirebaseDatabase.getInstance().getReference("AppInfo");
    ref.child("AppInfo")/*.child(UserId)*/.addChildEventListener(new ChildEventListener() {


        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {


            Log.v(Constants.TAG, "FireBaseCalled 11");
            //Getting the data from snapshot
            //AppInfo appInfo = postSnapshot.getValue(AppInfo.class);
            Log.v(Constants.TAG, "postSnapshot " + dataSnapshot.getChildren());
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {


            Log.v(Constants.TAG, "FireBaseCalled 22");
            //Getting the data from snapshot
            //AppInfo appInfo = postSnapshot.getValue(AppInfo.class);
            Log.v(Constants.TAG, "postSnapshot " + dataSnapshot.getChildren());

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {


            Log.v(Constants.TAG, "FireBaseCalled1 33");
            //Getting the data from snapshot
            //AppInfo appInfo = postSnapshot.getValue(AppInfo.class);
            Log.v(Constants.TAG, "postSnapshot " + dataSnapshot.getChildren());
        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {


            Log.v(Constants.TAG, "FireBaseCalled 44");
            //Getting the data from snapshot
            //AppInfo appInfo = postSnapshot.getValue(AppInfo.class);
            Log.v(Constants.TAG, "postSnapshot " + dataSnapshot.getChildren());
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {


        }

    });

}

给你。!希望这对你有帮助

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

public class MainActivity extends AppCompatActivity
{
          private FirebaseDatabase mdatabase;

            private DatabaseReference mdatabaseRef;
 public static List<AppInfo > appInfo_list =new ArrayList<>();

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.Main_Activity);

           initFirebase();

        AddEventFireBaseListner();


}



    public void initFirebase() {
        mdatabase = FirebaseDatabase.getInstance();
        mdatabaseReference = mdatabase.getReference();
        // storageRef = FirebaseStorage.getInstance().getReference();
    }





 public void AddEventFireBaseListner() {


     mdatabaseRef.child("AppInfo").addValueEventListener(new ValueEventListener() {
                    @Override     
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        Log.e(TAG, "AppInfoNode:");


     if (appInfo_list.size() > 0)
                appInfo_list.clear();



           for(DataSnapshot postSnapshot:dataSnapshot.getChildren())
               {


        AppInfo appInfo= postsnapshot.getValue(AppInfo.class);



               if(postSnapshot.getKey().equals("AppName"))
            {
                  Log.e(TAG, "NodeSnapShot:");


            String AppNameStr=postSnapshot.getValue().toString();

             Log.e(TAG, "AppName:"+AppNameStr);


          }



                   if(postSnapshot.getKey().equals("VersionName"))
                    {
                          Log.e(TAG, "VersionName:");


                    String VersionName=postSnapshot.getValue().toString();

                     Log.e(TAG, "VersionName:"+VersionName);


                  }


            if(postSnapshot.getKey().equals("VersionCode"))
                    {
                          Log.e(TAG, "VersionCode:");


                    String VersionCode=postSnapshot.getValue().toString();

                     Log.e(TAG, "VersionCode:"+VersionCode);




                  }//end of if 

                appInfo_list.add(appInfo);

          //  AppInfo modelClass=new AppInfo ();
          //  modelClass.setAppName(AppNameStr);
         //   modelClass.setAppVersionName(VersionName);
        //    modelClass.setAppVersionCode(VersionCode);


                    }

    }
import com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
公共类MainActivity扩展了AppCompatActivity
{
私有Firebase数据库mdatabase;
私有数据库引用mdatabaseRef;
public static List appInfo_List=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.Main_活动);
initFirebase();
AddEventFireBaseListner();
}
public void initFirebase(){
mdatabase=FirebaseDatabase.getInstance();
mdatabaseReference=mdatabase.getReference();
//storageRef=FirebaseStorage.getInstance().getReference();
}
public void AddEventFireBaseListner(){
mdatabaseRef.child(“AppInfo”).addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
Log.e(标签“AppInfoNode:”);
如果(appInfo_list.size()>0)
appInfo_list.clear();
对于(DataSnapshot postSnapshot:DataSnapshot.getChildren())
{
AppInfo AppInfo=postsnapshot.getValue(AppInfo.class);
if(postSnapshot.getKey().equals(“AppName”))
{
Log.e(标签“NodeSnapShot:”);
字符串AppNameStr=postSnapshot.getValue().toString();
Log.e(标记“AppName:+AppNameStr”);
}
if(postSnapshot.getKey().equals(“VersionName”))
{
Log.e(标记“VersionName:”);
字符串VersionName=postSnapshot.getValue().toString();
Log.e(标记“VersionName:+VersionName”);
}
if(postSnapshot.getKey().equals(“VersionCode”))
{
Log.e(标签,“VersionCode:”);
字符串VersionCode=postSnapshot.getValue().toString();
Log.e(标记“VersionCode:+VersionCode”);
}//if结束
appInfo_list.add(appInfo);
//AppInfo modelClass=newappinfo();
//setAppName(AppNameStr);
//setAppVersionName(VersionName);
//modelClass.setAppVersionCode(VersionCode);
}
}

在每个节点循环的末尾,您可以将其存储在您的ModelClass对象中。!

更改后,仅更改键返回,我希望整个节点列表不被调用,怎么办,我使用的是import com.google.firebase.database.ValueEventListener;station fot,它现在为您提供了我的所有代码和它的工作状态。只需遵循此操作,您就会得到结果。!让我们。