Firebase循环遍历子视图以填充微调器 - android

时间:2017-07-03 14:59:28

标签: android firebase firebase-realtime-database android-spinner

Database tree

我想要的是" Kasarwadi"以及将在之后添加的类似节点。我必须使用这些数据填充微调器。我怎么能循环才能得到这个?

当我试图在事件监听器中循环时,foreach循环没有被执行,或者我可以说控制没有在foreach(增强的for循环)循环中传输。

参考代码

         DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference("people-3999c");
       mDatabaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Log.d("STATE"," inside ondataChange");

                for (DataSnapshot location : dataSnapshot.getChildren()){
                    Log.d("STATE","1");
                    locationFromFB.add(location.getKey());
                    ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_spinner_item,locationFromFB);
                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    mSpinner.setAdapter(adapter);
                }
            Log.d("STATE","outside");

        }`

1 个答案:

答案 0 :(得分:1)

为了使用locationFromFB ArrayList,你需要在onDataChange()方法中声明它,否则由于异步行为而为null。

获取for循环的以下行,因为每次for循环迭代时都要创建一个新实例。

ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_spinner_item,locationFromFB);

请更改DatabaseReference,如下所示:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference yourRef = rootRef.child("Kasarwadi").child("Users");

希望它有所帮助。