从 Firebase 数据库填充微调器

Populatate the spinner from Firebase database

public class MainActivity extends AppCompatActivity {
DatabaseReference reference;
Spinner areaSpinner;
ArrayList<String> areas = new ArrayList<>();


@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    reference = FirebaseDatabase.getInstance().getReferenceFromUrl("https://vbspinner.firebaseio.com/Location");

    areaSpinner = (Spinner) findViewById(R.id.spinner);
    DatabaseReference mref = reference.child("areas");

    FirebaseListAdapter<String> firebaseListAdapter = new FirebaseListAdapter<String>(this, String.class, android.R.layout.simple_spinner_item, mref) {
        @Override
        protected void populateView(View v, String model, int position) {
            ((TextView)findViewById(android.R.id.text1)).setText(model);

        }
    };
    areaSpinner.setAdapter(firebaseListAdapter);
}

我的 Firebase 数据库:

我的构造函数class代码是

public class VBSpinner extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        if(!com.google.firebase.FirebaseApp.getApps(this).isEmpty()){
            FirebaseDatabase.getInstance().setPersistenceEnabled(true);
        }

我希望我的微调器值来自 Firebase 数据库(KvpTnTvl,等等)。我需要在哪里更改数据?

reference = FirebaseDatabase.getInstance()
     .getReferenceFromUrl("https://vbspinner.firebaseio.com/Location");

在上面的代码中,您使 reference 对象指向 "Location"(我认为您正在尝试这样做。但在以下代码中:

DatabaseReference mref = reference.child("areas");

您创建了另一个名为 mref 的引用(因为 child("areas"))指向 "https://vbspinner.firebaseio.com/Location/areas"。因此,如果您在 FirebaseListAdapter 中使用 mref,它将 return 为空,因为 ".../Location/areas".

中没有值

你应该在 FirebaseListAdapter 中使用 reference 来让它工作。

也许我来晚了,但请尝试使用我的方法将 firebase 文档项解析为微调器适配器

https://gist.github.com/majeytunio/9cc24a7edb06b2c2d3bbbb649ac9b602