因此,我尝试检索选择了特定值的用户列表。
这是我在Firebase中创建的数据库。我正在尝试打印在"providedServices“节点中选择了”食物“选项的用户及其地址的列表。
我遍历数据库并尝试使用if语句来查找选择该选项的用户,但是,我被卡住了。下面是我的代码片段:
有人能帮帮我吗?顺便说一句,我是个初学者,所以请对我手下留情:')
下面是FoodActivity页面,其中
public class FoodActivity extends AppCompatActivity {
DatabaseReference databaseDonors;
ListView listViewDonors;
List<Donors> donorsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_food);
listViewDonors = (ListView) findViewById(R.id.listViewDonors);
donorsList = new ArrayList<>();
}
public FoodActivity() {
}
@Override
protected void onStart() {
super.onStart();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference donorsRef = rootRef.child("donors");
Query provideServicesQuery = donorsRef.orderByChild("provideServices").equalTo("Food");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Donors donors = ds.getValue(Donors.class);
donorsList.add(donors);
Log.d("TAG", donors.getDonorName());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
};
provideServicesQuery.addListenerForSingleValueEvent(valueEventListener);
}
}下面是使用的捐赠者类。
public class Donors {
String donorID;
String donorName;
String providedServices;
String donorBusinessName;
String donorAddress;
String donorEmail;
String donorPhone;
public Donors(String donorID, String donorName, String providedServices, String donorBusinessName, String donorAddress, String donorEmail, String donorPhone) {
this.donorID = donorID;
this.donorName = donorName;
this.providedServices = providedServices;
this.donorBusinessName = donorBusinessName;
this.donorAddress = donorAddress;
this.donorEmail = donorEmail;
this.donorPhone = donorPhone;
}
public Donors() {
}
public String getDonorID() {
return donorID;
}
public String getDonorName() {
return donorName;
}
public String getProvidedServices() {
return providedServices;
}
public String getDonorBusinessName() {
return donorBusinessName;
}
public String getDonorAddress() {
return donorAddress;
}
public String getDonorEmail() {
return donorEmail;
}
public String getDonorPhone() {
return donorPhone;
}
}发布于 2020-10-03 17:59:53
要只获取provideServices属性设置为“食物”的对象,您绝对应该使用以下代码行中的查询:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference donorsRef = rootRef.child("donors");
Query provideServicesQuery = donorsRef.orderByChild("provideServices").equalTo("Food");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Donors donors = ds.getValue(Donors.class);
donorsList.add(donors);
Log.d("TAG", donors.getDonorName());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
};
provideServicesQuery.addListenerForSingleValueEvent(valueEventListener);除了将使用Donors对象填充donorsList之外,您还将在logcat中看到所有将provideServices属性设置为“Donors”的捐赠者的姓名。
https://stackoverflow.com/questions/64181821
复制相似问题