[英]How to display data in RecyclerView with CardView from Android firebase-realtime-database?
[英]How do I show a list of data in android studio based on the presence of a particular value in firebase-realtime-database?
所以我试图检索选择特定值的用户列表。
这是我在 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);
}
}
以下是使用的 Donors 类。
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;
}
}
要仅获取将provideServices
属性设置为“Food”的对象,您绝对应该使用以下代码行中的查询:
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);
除此之外事实donorsList
将填充Donors
的物体,你还可以看到在logcat中谁拥有的所有捐助者的名字provideServices
属性设置为“食品”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.