2017-08-03 57 views
1

任何人都可以教我如何更新我的Firebase值,当我点击我的Android Studio应用程序?没有必要检索和显示数据。只是我的Firebase中的增量值。例如,现在Firebase计数器值为0,当我点击一个按钮时,如何增加Firebase中的计数器值?我曾尝试使用下面的代码,但它不工作。Android工作室值增量在Firebase

import com.firebase.client.Firebase; 

public class Voting extends AppCompatActivity { 
private Button msendData; 
int counter; 
    private Firebase mRef; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_voting); 
     Firebase.setAndroidContext(this); 

     mRef = new Firebase("https://lollol.firebaseio.com/"); 
     msendData = (Button) findViewById(R.id.votethis); 
     msendData.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Firebase mRefChild = mRef.child("Booth A"); 
       mRefChild.setValue(counter++); 
      } 
+0

这看起来应该可以工作 –

回答

2

为了增加Firebase数据库中的值,首先需要检索该值。没有办法在不知道的情况下增加价值。要做到这一点,你需要遵循以下步骤:

  1. 从您的数据库的特定值添加监听
  2. 店,在可变
  3. 增加值是variabe使用计数器++
  4. 使用setValue(counter)直接方法上的参考

假设您的计数器的密钥是counter,代码将如下所示:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference yourRef = rootRef.child("Booth_A"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     int counter = dataSnapshot.child("counter").getValue(Integer.class); 
     counter++; 
     yourRef.child("counter").setValue(counter); 
     Log.d("TAG", counter); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
yourRef.addListenerForSingleValueEvent(eventListener); 

不要忘记在Booth and A之间使用_(下划线),如上面的代码所示。

希望它有帮助。

+0

谢谢,我会试试看。 –

+0

我如何存储变量的值? –

+0

目前我这样做了,但得到了错误mRef = new Firebase(“https://lollol.firebaseio.com/Booth A”); mRef.addValueEventListener(新ValueEventListener(){ @覆盖 公共无效onDataChange(DataSnapshot dataSnapshot){ int值= dataSnapshot.getValue(int.class); INT计数器=值; } –