我想要的是" 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");
}`
答案 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");
希望它有所帮助。