2017-01-20 2 views
0

My app is connected but not getting updated as in this picture you can see Я новичок в разработке приложений для Android. Я хочу сохранить и загрузить события нажатия кнопки в Firebase. Мой Android код кнопки клик:Сохранить событие нажатия кнопки приложения для Android в Firebase

View.OnClickListener btnOnOffClickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String onoff=""; 

      switch(v.getId()){ 
       case R.id.living_btn: 
        if (click ==0){ 
         click=1; 
         onoff = "/SWITCH-01=ON"; 
         living_btn.setBackgroundResource(R.drawable.livingroom); 
        }else{ 
         click=0; 
         onoff = "/SWITCH-01=OFF"; 
         living_btn.setBackgroundResource(R.drawable.livingroom_off); 
        } 
        break; 
       case R.id.kitchen_btn: 
        if (click ==0){ 
         click=1; 
         onoff = "/SWITCH-02=ON"; 
         kitchen_btn.setBackgroundResource(R.drawable.kitchen); 
        }else{ 
         click=0; 
         onoff = "/SWITCH-02=OFF"; 
         kitchen_btn.setBackgroundResource(R.drawable.kitchen_off); 
        } 
        break; 
       case R.id.bedroom1_btn: 
        if (click ==0){ 
         click=1; 
         onoff = "/SWITCH-03=ON"; 
         bedroom1_btn.setBackgroundResource(R.drawable.bed_room); 
        }else{ 
         click=0; 
         onoff = "/SWITCH-03=OFF"; 
         bedroom1_btn.setBackgroundResource(R.drawable.bed_room_off); 
        } 
        break; 
       case R.id.bedroom2_btn: 
        if (click ==0){ 
         click=1; 
         onoff = "/SWITCH-04=ON"; 
         bedroom2_btn.setBackgroundResource(R.drawable.bedroom2); 
        }else{ 
         click=0; 
         onoff = "/SWITCH-04=OFF"; 
         bedroom2_btn.setBackgroundResource(R.drawable.bedroom2_off); 
        } 
        break; 
       case R.id.bathroom_btn: 
        if (click ==0){ 
         click=1; 
         onoff = "/SWITCH-05=ON"; 
         bathroom_btn.setBackgroundResource(R.drawable.bathroom); 
        }else{ 
         click=0; 
         onoff = "/SWITCH-05=OFF"; 
         bathroom_btn.setBackgroundResource(R.drawable.bathroom_off); 
        } 
        break; 
       case R.id.toilet_btn: 
        if (click ==0){ 
         click=1; 
         onoff = "/SWITCH-06=ON"; 
         toilet_btn.setBackgroundResource(R.drawable.toi_on); 
        }else{ 
         click=0; 
         onoff = "/SWITCH-06=OFF"; 
         toilet_btn.setBackgroundResource(R.drawable.toi_off); 
        } 
        break; 
      } 

Могу ли я добавить v.getID для «ведения базы данных» и «установить значение» в onoff (переменной)? Если нет, то как я могу добавить данные щелчка кнопки? Также, как получить данные через событие «изменение данных».

Пожалуйста, помогите.

+0

Куда вы храните его в базе –

ответ

0

enter image description here Поддерживайте каждое имя кнопки в базе данных Firebase как узлы и поддерживайте дочерний элемент с именем «щелкнуть» под каждым кнопочным узлом в виде логической переменной «true» для ON и «false» для OFF.и начинайте обновление этих узлов на основе вашего положения переключателя.

 Button living_btn = findViewById(R.id.your_btnId); 
      Button kitchen_btn = findViewById(R.id.your_btnId); 
      ... 
      //declare all your buttonViews... 

      //attach the click listener to all buttons u just created like this... 

      kitchen_btn.setOnClickListener(btnOnOffClickListener); 
      living_btn.setOnClickListener(btnOnOffClickListener); 
       //Creating a Reference to Buttons Node in Firebase DB for changing switch positions. 
    final FirebaseDatabase database = FirebaseDatabase.getInstance(); 
        final DatabaseReference buttons = database.getReference("Buttons"); 

       HashMap<String,Object>detailsUpdate = new HashMap<>(); 
       View.OnClickListener btnOnOffClickListener = new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          String onoff=""; 

          switch(v.getId()){ 
           case R.id.living_btn: 
            if (click ==0){ 
             click=1; 
              detailsUpdate.put("clicked",true); 
          buttons.child("living_btn").updateChildren(detailsUpdate); 
             onoff = "/SWITCH-01=ON"; 
             living_btn.setBackgroundResource(R.drawable.livingroom); 
            }else{ 
             click=0; 
             onoff = "/SWITCH-01=OFF"; 
          detailsUpdate.put("clicked",false); 
          buttons.child("living_btn").updateChildren(detailsUpdate); 
             living_btn.setBackgroundResource(R.drawable.livingroom_off); 
            } 
            break; 

           // continue this for everyButton...... 


      } 
//Code for retreiving the button states 
    final DatabaseReference ref = database.getReference("Buttons"); 
ref.child("living_btn").addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot snapshot) { 
       for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) { 
      String clicked = childSnapshot.getKey(); 
if(clicked.equalsIgnoreCase("clicked")){ 
boolean clicked = Boolean.parseBoolean(dataSnapshot.getValue().toString()); 
//u will get clicked as true or false and then use the info for further coding 
} 
} 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 


     }); 
+0

Комментарии для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/133619/discussion-on-answer-by-roy-save-button-click-event-of-android-app-in- firebase). –

+0

@Roy Можем ли мы объявить hashmap в событии onClick? – Rachita

+0

Да, очевидно, мы можем .. !! @Rachita –