Java 如何根据firebase实时数据库中的特定值显示android studio中的数据列表?
因此,我试图检索选择特定值的用户列表 这是我在Firebase中创建的数据库。我正试图打印在“providedServices”节点中选择“Food”选项的用户及其地址列表 我正在遍历数据库并尝试使用IF语句查找选择该选项的用户,但是,我被卡住了。下面是我的代码片段: 有人能帮我吗?顺便说一句,我是初学者,所以请对我放轻松:') 以下是FoodActivity页面,其中Java 如何根据firebase实时数据库中的特定值显示android studio中的数据列表?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,因此,我试图检索选择特定值的用户列表 这是我在Firebase中创建的数据库。我正试图打印在“providedServices”节点中选择“Food”选项的用户及其地址列表 我正在遍历数据库并尝试使用IF语句查找选择该选项的用户,但是,我被卡住了。下面是我的代码片段: 有人能帮我吗?顺便说一句,我是初学者,所以请对我放轻松:') 以下是FoodActivity页面,其中 public class FoodActivity extends AppCompatActivity { Da
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);
}
}
要仅获取将
providedevices
属性设置为“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
将填充捐赠者
对象,您还将在logcat中看到所有将providedevices
属性设置为“Food”的捐赠者的姓名。嘿,Alex,我尝试了您的方法,但应用程序页面显示为空,即使在数据库中,已经有一些捐助者选择“食品”作为提供的服务:(在这种情况下,请编辑您的问题并添加您现在使用的确切代码,添加您的数据库的更详细的屏幕截图,并告诉我是否打印出了捐赠者的姓名。我已经编辑了问题。这有帮助吗?如果您需要更多详细信息,请务必让我知道:)另外,不,我认为捐赠者还没有打印在日志中。首先,将捐赠者类中的所有属性设置为私有的。要查看日志中是否打印了内容,请尝试通过标记在Android Studio中搜索。如果它仍然不能工作。请添加一个更详细的屏幕截图,如之前所要求的。嘿神秘RO!我能帮你提供其他信息吗?如果你认为我的答案对你有帮助,请考虑通过点击复选来接受它。✔️) 在投票箭头下方的左侧。应该将颜色更改为绿色。我非常感谢。谢谢!
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);