从 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 数据库(Kvp
、Tn
、Tvl
,等等)。我需要在哪里更改数据?
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
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 数据库(Kvp
、Tn
、Tvl
,等等)。我需要在哪里更改数据?
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