2017-01-20 53 views
0

My app is connected but not getting updated as in this picture you can see我是Android应用程序开发的新手。我想保存并检索Firebase中的按钮点击事件。我对按钮的点击Android的代码是:在Firebase中保存按钮点击事件Android应用程序

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数据库中的每个按钮名称保留为节点,并在每个Button节点下面维护一个名为“clicked”的子节点,作为布尔变量'true'表示ON,'false'表示关闭,并开始更新这些节点根据您的开关位置。

 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-火力)。 –

+0

@Roy我们可以在onClick事件中声明hashmap吗? – Rachita

+0

显然我们可以.. !! @Rachita –

相关问题