2017-01-21 1 views
0

저는 Android 및 Firebase 개발의 초보자입니다. 내 응용 프로그램의 버튼을 firebase에 저장하고 검색하는 작업을하고 있습니다. 내 자바 코딩은 약하다. 내 개념은 다음과 같습니다. 사용자가 앱에서 버튼을 클릭하면 클릭 한 버튼의 상태가 동일한 앱으로 다른 휴대 전화에서 업데이트되어야합니다.Firebase의 DataChange 클래스를 통해 android 앱에서 버튼 클릭 이벤트 업데이트

I 버튼 상태를 저장 할 수 있었다 :

public void onClick(View v) { 
      String onoff=""; 
      HashMap<String,Object> Update = new HashMap<>(); 
      switch(v.getId()){ 
       case R.id.living_btn: 
        if (click ==0){ 
         click=1; 
         onoff = "/SWITCH-01=ON"; 
         Update.put("clicked",onoff); 
         buttons.child("living_btn").updateChildren(Update); 
         living_btn.setBackgroundResource(R.drawable.livingroom); 
        }else{ 
         click=0; 
         onoff = "/SWITCH-01=OFF"; 
         Update.put("clicked",onoff); 
         buttons.child("living_btn").updateChildren(Update); 
         living_btn.setBackgroundResource(R.drawable.livingroom_off); 
        } 
        break; 

내가 데이터베이스에서 데이터를 검색하려면, 그래서 별도의 클래스를 생성 :

this link is for my database structure figure 내가 저장하는 데 사용되는 코드입니다 각 버튼마다. 그리고 주요 활동에서 그들을 호출하는 다음 코드를 사용 :

final DatabaseReference ref = database.getReference("Buttons"); 
ref.addValueEventListener(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
Log.e("data",dataSnapshot.getValue().toString()); 

Buttons buttonEntity = dataSnapshot.getValue(Buttons.class); 

} 

} 

@Override 
public void onCancelled(DatabaseError databaseError) { 

} 
}); 

하지만 데이터를 내가 의해, dataChange 클래스를 선택한 방법은 올바른입니다 검색 할 수있어? 제가 잘못 가고있는 곳을 알려주십시오.

+0

는 "데이터베이스"의 참조를 표시합니다. database.getReference ("Buttons") – Rahul

+0

@rasi 나는 당신을 얻지 못했습니다. – ra22

+0

@Rasi "버튼"은 다른 모든 버튼 값을 자식으로 저장하는 데이터베이스의 부모 노드이며 "buttons = FirebaseDatabase. getReference ("Buttons ")"로 작성되었습니다. – ra22

답변

0

올바른 노드 참조를 사용하십시오. ValueEventListener에서이 같은 모든 버튼의

FirebaseDatabase.getInstance().getReference().child("Buttons"); 

수집 상태 -

final HashMap<String, Boolean> status = new HashMap<>(); 
    for(DataSnapshot childSnapShot : dataSnapshot.getChildren()) { 
     status.put(childSnapShot.getKey(), childSnapShot.child("clicked").getValue(Boolean.class)); 
}