Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅从第二个请求获取值_Java_Android - Fatal编程技术网

Java 仅从第二个请求获取值

Java 仅从第二个请求获取值,java,android,Java,Android,我有一个问题,我从Firebase获得价值,但电子邮件只有在第二次运行活动后才会填满 private ArrayList<String> currentList = new ArrayList<>(); FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); final DatabaseReference databaseReference = FirebaseD

我有一个问题,我从Firebase获得价值,但电子邮件只有在第二次运行活动后才会填满

  private ArrayList<String> currentList = new ArrayList<>();
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        final DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("userTable").child(user.getUid()).child("Container");

        databaseReference.addValueEventListener(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for (DataSnapshot childDataSnapshot : dataSnapshot.getChildren()) {
                    String string = childDataSnapshot.getKey();

                    currentList.add(string);

                }


            }
            @Override
            public void onCancelled(DatabaseError databaseError) {

            }

        });
        //Toast.makeText(getContext(), currentList.size(),
        //        Toast.LENGTH_LONG).show();
        String size = String.valueOf(listCurrent.size());
        firstNameOfCurrentList.setText(size);
private ArrayList currentList=new ArrayList();
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
final DatabaseReference DatabaseReference=FirebaseDatabase.getInstance().getReference().child(“userTable”).child(user.getUid()).child(“容器”);
databaseReference.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot childDataSnapshot:DataSnapshot.getChildren()){
String String=childDataSnapshot.getKey();
currentList.add(字符串);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
//Toast.makeText(getContext(),currentList.size(),
//Toast.LENGTH_LONG).show();
String size=String.valueOf(listCurrent.size());
当前列表的firstname.setText(大小);
第一次大小=0;
第二次=3(真实结果)

在收到响应后更新UI。希望现在它可以正常工作

  databaseReference.addValueEventListener(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for (DataSnapshot childDataSnapshot : dataSnapshot.getChildren()) {
                    String string = childDataSnapshot.getKey();

                    currentList.add(string);

                }


//Toast.makeText(getContext(), currentList.size(),
    //        Toast.LENGTH_LONG).show();
    String size = String.valueOf(listCurrent.size());
    firstNameOfCurrentList.setText(size);



            }
            @Override
            public void onCancelled(DatabaseError databaseError) {

            }

        });

Firebase侦听器是异步的,这意味着它将在后台运行,并且在收到响应之前不会停止代码。 在代码中,您不必等待服务器返回值,这就是size=0的原因。 您需要做的是检查侦听器内部和for循环之后的大小:

 for (DataSnapshot childDataSnapshot : dataSnapshot.getChildren()) {
      String string = childDataSnapshot.getKey();
      currentList.add(string);
  }

String size = String.valueOf(listCurrent.size());
firstNameOfCurrentList.setText(size);
这样,您将等待firebase返回值,然后获取列表大小