Android 如何使用微调器从Firebase检索列表?
因此,我试图根据扇区微调器检索所有项目的列表,因为有些项目属于不同的扇区,我想显示属于特定扇区的案例 我有两个类,一个存储状态和日期,另一个存储位置 位置类Android 如何使用微调器从Firebase检索列表?,android,firebase,firebase-realtime-database,spinner,Android,Firebase,Firebase Realtime Database,Spinner,因此,我试图根据扇区微调器检索所有项目的列表,因为有些项目属于不同的扇区,我想显示属于特定扇区的案例 我有两个类,一个存储状态和日期,另一个存储位置 位置类 public class Location { public String sector; public String area; public double longitude; public double latitude; public String getSector() {
public class Location {
public String sector;
public String area;
public double longitude;
public double latitude;
public String getSector() {
return sector;
}
public String getArea() {
return area;
}
public double getLongitude() {
return longitude;
}
public double getLatitude() {
return latitude;
}
public Location()
{
}
public Location(String sector , String area, double longitude, double latitude)
{
this. sector = sector;
this. area = area;
this.longitude = longitude;
this.latitude = latitude;
}
@Override
public String toString() {
return "\n Sector='" + sector + '\'' +
",Area Name='" + area + '\'' +
",Longitude='" + longitude + '\'' +
",Latitude=" + latitude + "\n";
}
案例类
public class Case {
public String date;
public String caseStatus;
public String getDate() {
return date;
}
public String getCaseStatus() {
return caseStatus;
}
public Case()
{
}
public Case(String date,String caseStatus)
{
this.date = date;
this.caseStatus = caseStatus;
}
@Override
public String toString() {
return "\nCase Date='" + date + '\'' +
",Case Status='" + caseStatus + "\n";
}
}
将位置添加到案例类。此外,还应该将变量设置为私有
public class Case {
private Date date;
private String status;
private Location location;
public Date getDate() {
return date;
}
public String getStatus() {
return status;
}
public Location getLocation() {
return location;
}
public Case() {
}
public Case(Date date, String status, Location location) {
this.date = date;
this.status = status;
this.location = location;
}
@Override
public String toString() {
return "\nCase Date='" + date + '\'' +
",Case Status='" + status + "\n";
}
}
打开Firestore并启动一个项目。
在工具>Firebase>Firestore中将其连接到Android Studio。
使用字符串表示状态,时间戳表示日期,地图表示位置
将此代码添加到项目中
ArrayList<Case> cases = new ArrayList<>();
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
firestore.collection("cases")
.whereEqualTo("location.sector", "somesector")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Case case = document.toObject(Case.class);
cases.add(case);
// now you have list of Case objects where sector equals "somesector"
}
}
}
});
但是,如果我试图从FielBasic访问数据,我不应该使用DasaPopScript吗?我不想把列表存储在一个旋转器中,只想从扇区中选择扇区来检索列表,如果您想查询,请考虑使用FixStury。检查我的最新答案如果你能提供我在firestore中插入数据的方法,因为我对如何在firestore中添加对象有点迷茫,所以本官方教程应该可以帮助您,这段代码中到底有什么地方不符合您的预期?我想要一个解决方案,我可以使用微调器选择一个扇区,并显示一个包含匹配扇区的项的列表。看起来您没有尝试查询数据库或数据库填充数据对象。我建议从文档开始学习如何获取数据。
Case case = new Case(new Date(), "positive", new Location("somesector", "somearea", 150d, 555d));
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
firestore.collection("cases").add(case);