У меня есть массив имен пользователей (идентификаторов), которые мне нужно искать с использованием базы данных Firebase и рендеринга с использованием интерфейса Firebase, способ, которым я делаю это, показывает только последнего пользователя, а не всех пользователей, имеющих эти идентификаторы.Мне нужно сделать карты или всех пользователей с разными идентификаторами.
Это мой класс
public class UserMessageListFragment extends Fragment {
private ProgressDialog progressDialog;
private final String TAG = "UsersMessageList";
private RecyclerView mResultList;
private ArrayList<String> arrayUsers;
public static UserMessageListFragment newInstance() {
return new UserMessageListFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_user_message_list, container, false);
mResultList = view.findViewById(R.id.message_list);
mResultList.setHasFixedSize(true);
mResultList.setLayoutManager(new LinearLayoutManager(mResultList.getContext()));
final DatabaseReference refMessages = FirebaseDatabase.getInstance().getReference();
final DatabaseReference ref= FirebaseDatabase.getInstance().getReference().child("usuarios");
refMessages.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if(dataSnapshot.getKey().contains(UserDetails.username+ "_")) {
String[] userChatWithId = dataSnapshot.getKey().split(UserDetails.username+"_");
final Query firebaseSearchQuery = ref.orderByChild("username").equalTo(userChatWithId[1]);
final FirebaseRecyclerOptions<User> options =
new FirebaseRecyclerOptions.Builder<User>()
.setQuery(firebaseSearchQuery, User.class)
.build();
bindAndBuildFirebaseUi(options);
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
// progressDialog = new ProgressDialog(getContext());
// progressDialog.setMessage("Carregando...");
// progressDialog.show();
return view;
}
public void bindAndBuildFirebaseUi(FirebaseRecyclerOptions options) {
final FirebaseRecyclerAdapter<User, UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<User, UsersViewHolder>(options) {
@Override
public UsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.message_list_layout, parent, false);
return new UsersViewHolder(v);
}
@Override
protected void onBindViewHolder(final UsersViewHolder holder, int position, final User model) {
holder.bind(model);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UserDetails.chatWithId = model.getUsername();
UserDetails.chatWith = model.getName();
startActivity(new Intent(getContext(), Chat.class));
}
});
}
};
firebaseRecyclerAdapter.startListening();
mResultList.setAdapter(firebaseRecyclerAdapter);
}
}
, в этой строке
final Query firebaseSearchQuery = ref.orderByChild("username").equalTo(userChatWithId[1]);
будут разные значениявнутри userChatWithid 1 , однако FirebaseUI отображает только последний.
Я начинаю ненавидеть FirebaseUI, потому что у меня так много проблем с ним.
Можеткто-нибудь, помогите мне, пожалуйста ???