Firebase在Android中以编程方式获取子值的索引

use*_*719 2 android firebase

有没有办法获得FirebaseAndroid 中的孩子的索引?不幸的是我没有10个声誉所以我会在这里发布我的照片:http://gyazo.com/70d095cfac4fa92ea344e137fa44ef6d

我想要的是在某种程度上获取某个子节点中的值以循环索引:

//For loop/Iterator to get value to store in an array
FireBase.child("Europe").child("Albania").child("answers).child(i).getValue();
Run Code Online (Sandbox Code Playgroud)

use*_*719 6

我找到了自己想要的答案.

private int i = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Firebase.setAndroidContext(this);
        Firebase myFirebaseRef = new Firebase("https://<your_firebase>/");
        myFirebaseRef.child("Europe").child("Albania").child("answers").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Iterator<DataSnapshot> iterator = dataSnapshot.getChildren().iterator();
                int length = (int) dataSnapshot.getChildrenCount();
                String[] sampleString = new String[length];
                while(i < length) {
                    sampleString[i] = iterator.next().getValue().toString();
                    Log.d(Integer.toString(i), sampleString[i]);
                    i++;
                }
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

"i"是您从中开始的索引,在这种情况下为0.

DataSnapshot.getChildren().iterator();
Run Code Online (Sandbox Code Playgroud)

返回一个

Iterator<DataSnapshot>
Run Code Online (Sandbox Code Playgroud)

然后我创建了endIndex,它是一个长度并通过while循环循环.然后我创建了一个String数组并添加了子的所有值

iterator.next().getValue().toString();
Run Code Online (Sandbox Code Playgroud)

因为我的对象是字符串.