Android 如何使用firebase进行编码以更新数据而不是替换数据?

Android 如何使用firebase进行编码以更新数据而不是替换数据?,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我有个问题。我的应用程序当前正在使用firebase数据库。下面是它如何运行的流程。用户将根据组名对海报进行评估。因此,一个组将有多个用户对其进行评估。但目前在我的应用程序中,只有一个用户可以评估一个组。我希望每次用户添加数据(评论和分数)时,它都会更新数据。不替换数据。如果你能给我一些反馈,我将不胜感激 这是我的代码 import android.content.Intent; //import android.graphics.Color; //import android.graphics

我有个问题。我的应用程序当前正在使用firebase数据库。下面是它如何运行的流程。用户将根据组名对海报进行评估。因此,一个组将有多个用户对其进行评估。但目前在我的应用程序中,只有一个用户可以评估一个组。我希望每次用户添加数据(评论和分数)时,它都会更新数据。不替换数据。如果你能给我一些反馈,我将不胜感激

这是我的代码

import android.content.Intent;
//import android.graphics.Color;
//import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Button;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;


public class FormActivity extends AppCompatActivity {

//DatabaseReference Db;
//FirebaseHelper helper;

private FirebaseAuth firebaseAuth;
ChildEventListener childEventListener;

private EditText et1, et_comment;
private Spinner sp;
private Boolean loop = false;
private ArrayAdapter<String> adapter;
private String groupKey;
private DatabaseReference databaseReference;
private TextView tv_outcome;
private ArrayList<String> keys = new ArrayList<>();
private ArrayList<String> groupNames = new ArrayList<>();
private ArrayList<String> posterIds = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_form);
  // getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#E71E67")));

    firebaseAuth = FirebaseAuth.getInstance();

    if (firebaseAuth.getCurrentUser()== null){
        finish();
        startActivity(new Intent(this, Login.class));
    }

    databaseReference = FirebaseDatabase.getInstance().getReference();

    final RadioGroup rg1 = (RadioGroup) findViewById(R.id.rg1);
    final RadioGroup rg2 = (RadioGroup) findViewById(R.id.rg2);
    final RadioGroup rg3 = (RadioGroup) findViewById(R.id.rg3);
    final RadioGroup rg4 = (RadioGroup) findViewById(R.id.rg4);
    final RadioGroup rg5 = (RadioGroup) findViewById(R.id.rg5);
    final RadioGroup rg6 = (RadioGroup) findViewById(R.id.rg6);
    final RadioGroup rg7 = (RadioGroup) findViewById(R.id.rg7);
    et1 = (EditText) findViewById (R.id.et1);
    et_comment=(EditText) findViewById(R.id.et_comment);

    tv_outcome = (TextView) findViewById(R.id.tv_outcome);

    Button btn_submit = (Button) findViewById(R.id.btn_submit);
    sp = (Spinner) findViewById(R.id.group);

    //Db=FirebaseDatabase.getInstance().getReference();
    //helper=new FirebaseHelper(Db);

    getKeys();
    getGroups();

    sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            groupKey = keys.get(sp.getSelectedItemPosition());
            Log.d("groupKey", groupKey);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {

        }
    });

    btn_submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            String value1 = ((RadioButton) findViewById(rg1.getCheckedRadioButtonId())).getText().toString();
            String value2 = ((RadioButton) findViewById(rg2.getCheckedRadioButtonId())).getText().toString();
            String value3 = ((RadioButton) findViewById(rg3.getCheckedRadioButtonId())).getText().toString();
            String value4 = ((RadioButton) findViewById(rg4.getCheckedRadioButtonId())).getText().toString();
            String value5 = ((RadioButton) findViewById(rg5.getCheckedRadioButtonId())).getText().toString();
            String value6 = ((RadioButton) findViewById(rg6.getCheckedRadioButtonId())).getText().toString();
            String value7 = ((RadioButton) findViewById(rg7.getCheckedRadioButtonId())).getText().toString();


            float marks = Float.parseFloat(value1) + Float.parseFloat(value2) + Float.parseFloat(value3) + Float.parseFloat(value4) + Float.parseFloat(value5) + Float.parseFloat(value6) + Float.parseFloat(value7);

            //calculate total

            float total = makeCalculations(marks);

            tv_outcome.setText(String.valueOf(total));

            saveEvaluation();
        }
    });

}

  private void saveEvaluation(){

 //       String Name = et1.getText().toString().trim();

    Float Total = Float.valueOf(tv_outcome.getText().toString());

    String Comment = et_comment.getText().toString().trim();

    Evaluation evaluation =  new Evaluation(Total,Comment);

    FirebaseUser user = firebaseAuth.getCurrentUser();

//        if(TextUtils.isEmpty(Name)){
//            et1.setError("Please Enter Group Name");
//            et1.requestFocus();
//            return;
//        }

    if(TextUtils.isEmpty(Comment)){
        et_comment.setError("Please Enter Your Comment");
        et_comment.requestFocus();
        return;
    }

    assert user != null;

//  databaseReference.child("Evaluation").
//child(groupKey).setValue(evaluation);

databaseReference.child("Evaluation").child(groupKey).child("total").
setValue(Total);


databaseReference.child("Evaluation").child(groupKey).child("comment").
setValue(Comment);

    Toast.makeText(this, "Information Saved...", Toast.LENGTH_LONG).show();


}

private float makeCalculations(float marks) {

    return (marks / 35 * 100);

}

private void getKeys() {
    childEventListener = new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            keys.add(dataSnapshot.getKey());
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    };
    databaseReference.child("Evaluation").addChildEventListener(childEventListener);
}

private void getGroups() {
    databaseReference.child("Evaluation").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String posterId = "";
            String group = "";

            for(DataSnapshot snapshot : dataSnapshot.getChildren()) {
                posterId = snapshot.child("posterID").getValue().toString();
                group = snapshot.child("group").getValue().toString();

                if(!posterIds.contains(posterId)) {
                    posterIds.add(posterId);
                    groupNames.add(group);
                }
            }

            addData(posterId, group);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

private void addData(String id, String group) {
        adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, groupNames);
        sp.setAdapter(adapter);

    Log.d("LoadSpinner", "Ayyee");
}
}
导入android.content.Intent;
//导入android.graphics.Color;
//导入android.graphics.drawable.ColorDrawable;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.text.TextUtils;
导入android.util.Log;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.EditText;
导入android.widget.RadioButton;
导入android.widget.RadioGroup;
导入android.widget.Button;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
导入com.google.firebase.database.ChildEventListener;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.util.ArrayList;
公共类FormActivity扩展了AppActivity{
//数据库参考数据库;
//FirebaseHelper;
私有FirebaseAuth FirebaseAuth;
ChildEventListener ChildEventListener;
私人编辑文本et1,ETU评论;
私人纺纱机;
私有布尔循环=false;
专用阵列适配器;
私有字符串组密钥;
私有数据库参考数据库参考;
私人文本查看电视节目;
私有ArrayList键=新ArrayList();
private ArrayList groupNames=new ArrayList();
private ArrayList posterIds=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_表单);
//getActionBar().setBackgroundDrawable(新的ColorDrawable(Color.parseColor(“#E71E67”));
firebaseAuth=firebaseAuth.getInstance();
如果(firebaseAuth.getCurrentUser()==null){
完成();
startActivity(新意图(this,Login.class));
}
databaseReference=FirebaseDatabase.getInstance().getReference();
最终放射组rg1=(放射组)findViewById(R.id.rg1);
最终放射组rg2=(放射组)findViewById(R.id.rg2);
最终放射组rg3=(放射组)findViewById(R.id.rg3);
最终放射组rg4=(放射组)findViewById(R.id.rg4);
最终放射组rg5=(放射组)findViewById(R.id.rg5);
最终放射组rg6=(放射组)findViewById(R.id.rg6);
最终放射组rg7=(放射组)findViewById(R.id.rg7);
et1=(EditText)findViewById(R.id.et1);
et_comment=(EditText)findViewById(R.id.et_comment);
tv_结果=(TextView)findViewById(R.id.tv_结果);
按钮btn_提交=(按钮)findViewById(R.id.btn_提交);
sp=(微调器)findViewById(R.id.group);
//Db=FirebaseDatabase.getInstance().getReference();
//helper=新的FirebaseHelper(Db);
getKeys();
getGroups();
sp.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView arg0、视图arg1、内部arg2、长arg3){
groupKey=keys.get(sp.getSelectedItemPosition());
Log.d(“groupKey”,groupKey);
}
@凌驾
未选择公共无效(AdapterView arg0){
}
});
btn_submit.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
字符串值1=((RadioButton)findViewById(rg1.getCheckedRadioButtonId()).getText().toString();
字符串值2=((RadioButton)findViewById(rg2.getCheckedRadioButtonId()).getText().toString();
字符串值3=((RadioButton)findViewById(rg3.getCheckedRadioButtonId()).getText().toString();
字符串值4=((RadioButton)findViewById(rg4.getCheckedRadioButtonId()).getText().toString();
字符串值5=((RadioButton)findViewById(rg5.getCheckedRadioButtonId()).getText().toString();
字符串值6=((RadioButton)findViewById(rg6.getCheckedRadioButtonId()).getText().toString();
字符串值7=((RadioButton)findViewById(rg7.getCheckedRadioButtonId()).getText().toString();
浮点标记=float.parseFloat(value1)+float.parseFloat(value2)+float.parseFloat(value3)+float.parseFloat(value4)+float.parseFloat(value5)+float.parseFloat(value6)+float.parseFloat(value7);
//计算总数
浮动总额=计算(标记);
tv_outcome.setText(String.valueOf(total));
saveEvaluation();
}
});
}
私有void saveEvaluation(){
//字符串名称=et1.getText().toString().trim();
Float Total=Float.valueOf(tv_output.getText().toString());
String Comment=et_Comment.getText().toString().trim();
评估=新评估(总计,评论);
FirebaseUser=firebaseAuth.getCurrentUser();
//if(TextUtils.isEmpty(Name)){
//et1.setError(“请输入组名”);
//et1.requestFocus();
//返回;
//        }
if(TextUtils.isEmpty(注释)){
et_comment.setError(“请输入您的注释”);
et_comment.requestFocus();
返回;
}
断言用户!=null;
//databaseReference.child(“评估”)。
//child(groupKey).setValue(评估);
databaseReference.child(“评估”).child(groupKey).child(“总计”)。
设定值(总计);
databaseReference.child(“Evalu
databaseReference.child("Evaluation").child(groupKey).child("total").
setValue(Total);


databaseReference.child("Evaluation").child(groupKey).child("comment").
setValue(Comment);
databaseReference.child("Evaluation").child(groupKey).child(user.getUid()).child("total").
setValue(Total);


databaseReference.child("Evaluation").child(groupKey).child(user.getUid()).child("comment").
setValue(Comment);