2017-01-21 3 views
0

私はアンドロイドとfirebase開発の初心者です。私はfirebaseに自分のアプリケーションのボタンを保存し、それらを取得する作業をしています。私のJavaコーディングは少し弱いです。 私のコンセプトは、ユーザーがボタンをクリックするとアプリケーションのボタンをクリックしたときに、ボタンのステータスが同じアプリで他の携帯電話で更新されるはずです。私はボタンの状態を保存することができましたFirebaseのDataChangeクラスを介してアンドロイドアプリのボタンクリックイベントを更新します

this link is for my database structure figure 私が店に使用されるコードは次のとおりです。

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; 

私は、データベースからデータを取得したいので、私は別々のクラスを作成しました各ボタンごとに次に、主な活動でそれらを呼び出すために、次のコードを使用:

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

ノードの正しい参照を使用してください。

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

ValueEventListenerでこのようにすべてのボタンの収集状況 -

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