Я создал RecyclerView
, который показывает информацию о местах, которые я сохранил в Firebase. Каждое местоположение сохраняется в уникальном идентификаторе пользователя, но я хочу, чтобы RecyclerView
показывал ВСЕ местоположения независимо от того, в каком ИД пользователя они сохранены.
Моя база данных выглядит так
User Locations
---ih4flEIASsgs7tk5tFSBFNw1R8U2
------Bay tower lounge
-----------name
-----------location
------China Sichuan
-----------name
-----------location
---juh972y271bhw281732h2j31h2hh
------Greene lounge
-----------name
-----------location
------Hotel Canal
-----------name
-----------location
Я хочу отображать такие результаты, как зал "Bay Bay", Китай Сычуань, "Green Lounge", канал отеля, независимо от длинного идентификатора пользователя.
Я успешно реализовал представление рециркулятора, которое отображает местоположения, опубликованные пользователем, но я не знаю, как разместить все местоположения независимо от пользователя.
public void startListening() {
FirebaseUser user = mAuth.getCurrentUser();
String userID = user.getUid();
Query query = FirebaseDatabase.getInstance()
.getReference()
.child("User Locations")
.child(userID)
.orderByChild("time")
.limitToLast(20);
FirebaseRecyclerOptions<LocationInformation> options =
new FirebaseRecyclerOptions.Builder<LocationInformation>()
.setQuery(query, LocationInformation.class)
.build();
FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<LocationInformation, UserViewHolder>(options) {
@Override
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new instance of the ViewHolder, in this case we are using a custom
// layout called R.layout.message for each item
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.feed_layout, parent, false);
return new UserViewHolder(view);
}
@Override
protected void onBindViewHolder(UserViewHolder holder, int position, LocationInformation model) {
holder.setName(model.name);
holder.setRating(model.rating);
holder.setAddress(model.address);
holder.setTime(model.time);
//holder.setRating(model.rating);
final String name = getRef(position).getKey();
//final float rateValue = getRef(position).getKey();
}
};
mRecyclerFeed.setAdapter(adapter);
adapter.startListening();
}
Я новичок и испытываю нехватку времени, поэтому, пожалуйста, если вы можете мне помочь, можете ли вы оставить ответ с подробным и конкретным описанием того, как я могу это исправить? большое спасибо :)
UPDATE:
Я добавил этот код, который предназначен для циклического обхода моей базы данных и возврата всех местоположений для каждого из пользователей, НО он просто возвращает местоположения одного пользователя - этот пользователь фактически не является тем пользователем, в котором я вошел в систему, так что я знаю, что это близко к работе, но не полностью. Может ли кто-нибудь указать, что мне нужно изменить, чтобы ВСЕ местоположения пользователей публиковались, а не только один пользователь? благодарю вас!!! :)
'' '' '' '
private void getPastUserIds(){
//locationReference = FirebaseDatabase.getInstance().getReference().child("User Locations");
locationsDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange( DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
for(DataSnapshot locations : dataSnapshot.getChildren()){
startListening(locations.getKey());
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
'' ''