您好我正在尝试根据从微调器中选择的项目在列表视图中显示某些数据。 This is how the display page currently looks.它正在读取节点中的所有数据。因为在上面的微调器上选择了“Running”,所以我希望列表视图只显示Running。
这是我用来读取所有数据的代码。
@Override
protected void onStart() {
super.onStart();
//reading data to listview, every time its saved
currentUserDB2.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
cardiosList.clear();
for(DataSnapshot cardioHistorySnapshot : dataSnapshot.getChildren()){
Cardio cardio = cardioHistorySnapshot.getValue(Cardio.class);
cardiosList.add(cardio);
}
CardioHistoryList adapter = new CardioHistoryList(Cardio_History.this, cardiosList);
ListViewCardioHistory.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
工作代码
spinnerCardioHistory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String name = spinnerCardioHistory.getSelectedItem().toString();
currentUserDB2.orderByChild("detailCategory").equalTo(name).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
cardiosList.clear();
for (DataSnapshot cardioHistorySnapshot : dataSnapshot.getChildren()){
Cardio cardio = cardioHistorySnapshot.getValue(Cardio.class);
cardiosList.add(cardio);
}
CardioHistoryList adapter = new CardioHistoryList(Cardio_History.this, cardiosList);
ListViewCardioHistory.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
答案 0 :(得分:1)
如果您只想显示单词Running
,请执行以下操作:
String text = spinner.getSelectedItem().toString();
FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference currentUserDB2=FirebaseDatabase.getInstance().getReference().child("Cardio").child(user.getUid());
currentUserDB2.orderByChild("detailCategory").equalTo(text).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
cardiosList.clear();
for(DataSnapshot cardioHistorySnapshot : dataSnapshot.getChildren()){
String category=cardioHistorySnapshot.child("detailCategory").getValue().toString();
cardiosList.add(category);
}
CardioHistoryList adapter = new CardioHistoryList(Cardio_History.this, cardiosList);
ListViewCardioHistory.setAdapter(adapter);
首先,您将获得微调器String text = spinner.getSelectedItem().toString();
然后将其添加到查询orderByChild("detailCategory").equalTo(text)
中,然后从数据库中检索,它只会添加在微调器中选择的单词“Running”。