2016-06-01 4 views
9

이것은 firebase 실시간 데이터베이스에 새로운 사람을 추가하는 나의 논리입니다. 하지만 새로운 항목을 만드는 대신 이전 항목을 새로운 항목으로 업데이트하는 것입니다.firebase android에 새 데이터를 추가하는 방법

buttonSave.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 


      /* 
      new Firebase(Config.FIREBASE_URL) 
        .push() 
        .child("title") 
        .setValue(text.getText().toString()); 
      */ 

      Firebase ref = new Firebase(Config.FIREBASE_URL); 
      String name = editTextName.getText().toString().trim(); 
      String address = editTextAddress.getText().toString().trim(); 

      //Creating Person object 
      Person person = new Person(); 

      //Adding values 
      person.setName(name); 
      person.setAddress(address); 
      ref.child("Person").setValue(person); 

     } 
    }); 


    new Firebase(Config.FIREBASE_URL).addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      for (DataSnapshot postSnapshot : snapshot.getChildren()) { 
       //Getting the data from snapshot 
       Person person = postSnapshot.getValue(Person.class); 

       //Adding it to a string 
       String string = "Name: "+person.getName()+"\nAddress: "+person.getAddress()+"\n\n"; 

       //Displaying it on textview 
       textViewPersons.setText(string); 
      } 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 
      System.out.println("The read failed: " + firebaseError.getMessage()); 
     } 
    }); 

무엇이 잘못 되었나요? 아무도 이것에 나를 도울 수 있습니까?

+0

이동, 당신은 이전 API의 –

+0

이 볼을 사용하는 것은 당신을 도울 수 있습니다 : -http : //stackoverflow.com/questions/37338409/rerofit-firebase/37338410#37338410 – sushildlh

+2

@VeereshCharantimath 새로운 firebase 문서는 전혀 도움이되지 않습니다. 이 문서는 firebase의 고급 전문가를 대상으로하며, 새로운 문서가 아닌 사람들을 대상으로합니다. –

답변

23

당신은 항상 같은 심판

Person person = new Person(); 
//Adding values 
person.setName(name); 
person.setAddress(address); 
ref.child("Person").setValue(person); 

Check the doc 사용하는이 방법의 setValue()를 사용

은 자식 노드를 포함하여 지정된 위치에 데이터를 덮어 씁니다.

귀하의 경우에 은 동일한 데이터을 재정의합니다.

새로운 Firebase 참조에 새로운 자식이 추가 될 때마다 push() 메서드를 사용하여 고유 한 ID를 생성해야합니다.

mAuth = FirebaseAuth.getInstance(); 
FirebaseUser user = mAuth.getCurrentUser(); 
String userId = user.getUid(); 
Firebase rootRef = new Firebase(Config.USER_URL); 
Firebase userRef = rootRef.child("Users"); 
Person newUser = new Person(); 
newUser.setFirstName(firstName); 
newUser.setLastName(lastName); 
userRef.child(userId).setValue(newUser); 

로깅 사용자가 다른 경우 사용자 ID 따라서 달라집니다, 당신은 항상을위한 새로운 데이터 목록으로 이동합니다

Person person = new Person(); 
//Adding values 
person.setName(name); 
person.setAddress(address); 
Firebase newRef = ref.child("Person").push(); 
newRef.setValue(person); 
+0

답변 해 주셔서 감사합니다. 추가 부분이 예상대로 작동합니다. 당신은 데이터베이스에 추가 된 모든 사람들을 표시 할 수 있도록 onDataChange에서 변경해야 할 부분에 대해 저를 도울 수 있습니까? – user3559471

+0

참조로 ref.child ("Person")를 사용하여 onChildAdded() 콜백을 사용할 수 있습니다. –

0

자식을 참조하고 을 클릭 할 때마다 그 값 (setValue())을 설정하면 해당 자식 만 편집됩니다. 대신 push()을 사용해보세요.

0

당신은 같은 데이터에 새 자식을 추가 할 수 있습니다 사용자 아래의 userId에 새로 로그인 한 사용자. 새로운 중포 기지 문서를 통해

관련 문제