这是 Firebase 数据库截图
这是我的 MainActivity.java java 代码:
public class MainActivity extends AppCompatActivity {
EditText date, title, description, imageURL;
Button btn_click;
DatabaseReference databaseReference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_click = findViewById(R.id.btn_click);
date = findViewById(R.id.date);
title = findViewById(R.id.title);
description = findViewById(R.id.description);
imageURL = findViewById(R.id.imgUrl);
databaseReference = FirebaseDatabase.getInstance().getReference("notifications");
Log.e("Reference is : ", String.valueOf(databaseReference));
btn_click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String d= date.getText().toString().trim();
String t= title.getText().toString().trim();
String desc= description.getText().toString().trim();
String i= imageURL.getText().toString().trim();
Model model = new Model(d,t,desc,i);
String id = databaseReference.push().getKey();
databaseReference.push().setValue(model);
Toast.makeText(MainActivity.this, "Submitted Successfully ", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(MainActivity.this, "Error Occured !", Toast.LENGTH_SHORT).show();
}
});
这是模型类:
String date,desc,image,title;
public Model(){
}
public Model(String date, String desc, String image, String title) {
this.date = date;
this.desc = desc;
this.image = image;
this.title = title;
}
public String getDate() {
return date;
}
public String getDesc() {
return desc;
}
public String getImage() {
return image;
}
public String getTitle() {
return title;
}
为什么条目在数据库中重复,我该如何避免?
最佳答案
改变这个:
btn_click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String d= date.getText().toString().trim();
String t= title.getText().toString().trim();
String desc= description.getText().toString().trim();
String i= imageURL.getText().toString().trim();
Model model = new Model(d,t,desc,i);
String id = databaseReference.push().getKey();
databaseReference.push().setValue(model);
Toast.makeText(MainActivity.this, "Submitted Successfully ", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(MainActivity.this, "Error Occured !", Toast.LENGTH_SHORT).show();
}
});
进入这个:
btn_click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
String d= date.getText().toString().trim();
String t= title.getText().toString().trim();
String desc= description.getText().toString().trim();
String i= imageURL.getText().toString().trim();
Model model = new Model(d,t,desc,i);
String id = databaseReference.push().getKey();
databaseReference.child(id).setValue(model);
Toast.makeText(MainActivity.this, "Submitted Successfully ", Toast.LENGTH_SHORT).show();
}
});
向数据库添加数据时,不需要使用用于检索数据的addValueEventListener
。
关于java - 为什么条目在 Firebase 数据库中不断循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59434376/