当我尝试从 firebase 获取数据时,我的微调器似乎没有填充。请帮我。 这是初始化微调器的代码:
private void initLocation() {
DatabaseReference myRef = database.getReference("Location");
ArrayList<Location> list = new ArrayList<>();
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
for (DataSnapshot issue : snapshot.getChildren()) {
list.add(issue.getValue(Location.class));
}
Log.d("FirebaseData", "Data loaded successfully: " + list.size() + " items");
ArrayAdapter<Location> adapter = new ArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_dropdown_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
locationSp.setAdapter(adapter);
} else {
Log.d("FirebaseData", "No data found");
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.e("FirebaseData", "Data loading canceled with error: " + error.getMessage());
}
});
}
这是 Location.java 文件:
public class Location {
private int Id;
private String loc;
public Location(String loc) {
this.loc = loc;
}
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
}
我希望填充微调器,但当我运行应用程序时,微调器文本为空白,当我按下它时,它不会掉落任何内容。
更新,这是数据库结构:
"Location": [
{
"Id": 0,
"loc": "LA california"
},
{
"Id": 1,
"loc": "NY manhattan"
}
],
"Price": [
{
"Id": 0,
"Value": "1$ - 10$"
},
{
"Id": 1,
"Value": "10$ - 30$"
},
{
"Id": 2,
"Value": "more than 30$"
}
]
我没有收到任何其他错误。应用程序运行,但下拉列表未填充。我已经通过更新获取数据库的方式解决了这个问题。
database = FirebaseDatabase.getInstance("database location");