无法显示从FirebaseDatabase检索到的所有字符串

时间:2016-11-24 08:49:21

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

我试图从firebase检索一些字符串并尝试将它们显示为AppCompatSpinner的条目。

以下是我如何检索它:

vDatabase.child(key).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Map<String, String> newRequest = (Map<String, String>) dataSnapshot.getValue();
        vName = newRequest.get("vName");
        Toast.makeText(getBaseContext(), venueName, Toast.LENGTH_SHORT).show();
        if (vName != null) {
            ArrayList<String> spinnerArray = new ArrayList<>();
            spinnerArray.add(vName);

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                    getBaseContext(), android.R.layout.simple_spinner_dropdown_item, spinnerArray);

            venueSpinner.setAdapter(adapter);
        } else {
            Toast.makeText(getBaseContext(), "v == null", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

问题是上面的代码是检索所有字符串但只显示最后一个提取的字符串而不是所有字符串。

这里有什么问题,如何显示从FirebaseDatabase检索到的所有字符串?

1 个答案:

答案 0 :(得分:2)

声明ArrayList spinnerArray = new ArrayList&lt;&gt;();在你的班级不在onDatachange方法

通过保持onDatachange,变量是新创建的,所以每次在其中插入新值,所以你得到最后一个要显示的值。