那么,我明白你想在你转到下一个活动之前检查数据库中的值。我的建议是,
1)创建一个DatabaseReference的ArrayList,指向您的活动中的Firebase中的数据位置。
Arraylist<DatabaseReference> list = new ArrayList<>();
list.add(FirebaseDatabase.getInstance().getReference().child("my_child_node_1"):
list.add(FirebaseDatabase.getInstance().getReference().child("my_child_node_2"):
list.add(FirebaseDatabase.getInstance().getReference().child("my_child_node_3"):
2)创建接口和回调方法。
public static interface DataCallback {
static void onDataAdded(String string); //Use the necessary data type
}
3)使用接口为您的Event侦听器创建构造函数。
public static class DataListener implements ValueEventListener {
private DataCallback dataCallback;
public DataListener(DataCallback dataCallback) {
this.dataCallback = dataCallback;
}
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String data = snapshot.getValue(String.class);
//This is step 4
if(dataCallback!=null) {
dataCallback.onContactAdded(data);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
}
4)从听者的值传递至活动内部onDataChange()监听器
if(dataCallback!=null) {
dataCallback.onContactAdded(data);
}
5的方法,如下所示)实现在活动的界面并覆盖其回调方法
public class MyActivity extends AppCompatActivity implements DataCallback{
private EditText edittext1;
private EditText edittext2;
private EditText edittext3;
private ArrayList<String> my_list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//do stuff...
}
@Override
public void onDataAdded(String data) {
}
}
6)实例并在活动的增加的onResume听众()方法
@Override
public void onResume(){
super.onResume();
DataListener listener = new DataListener(this);
list[0].addListenerForSingleValueEvent(listener);
list[1].addListenerForSingleValueEvent(listener);
list[2].addListenerForSingleValueEvent(listener);
}
7)得到的回调方法里面的活动从火力值如下
@Override
public void onDataAdded(String data){
my_list.add(data);
}
8),你可以检查是否值从火力比赛得到了来自EditText上得到的OnClicklistener内的数值为你按钮。
if (button != null) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(my_list.contains(edittext1.getText().toString)){
if(my_list.contains(edittext.getText().toString)){
if(my_list.contains(edittext.getText().toString)){
startActivity(new intent(MyActivity.this, NextActivity.class))
}
}
}
}
});
}
9)删除onPause()方法中的监听器。
@Override
public void onPause(){
super.onPause();
list[0].removeEventListener(listener);
list[1].removeEventListener(listener);
list[2].removeEventListener(listener);
}
而不是描述代码和问题,编辑您的问题,以包括[最小代码重现问题](http://stackoverflow.com/help/mcve)。这将大大提高获得可回答问题的机会。 –
@FrankvanPuffelen对不起,我现在试着做些什么 – procinct
这听起来像你会希望这三个字段存储在同一个节点下。然后通过一次addListenerForSingleValueEvent调用,您可以检索包含三个字段的映射,然后进行您的比较客户端。如果您包含代码,我很乐意向您展示如何优雅地进行操作。 –