Android Firestore回收视图

Android Firestore回收视图,android,android-fragments,android-recyclerview,Android,Android Fragments,Android Recyclerview,嗨,我被困在这一部分,我有两个收集第一个是用户,第二个是朋友。我希望我的recyclerview在当前用户的帮助下在列表上显示我的朋友,因为在当前用户上存储了其他人的id,我希望它显示在recyclerview上,但当它显示时,我希望从存储用户名和电子邮件的用户那里获取他们的信息 我只希望在当前用户id的帮助下,朋友集合id显示在recyclerview上。然后我希望从用户集合中获取值,如他们的姓名和电子邮件值。 适配器 公共类FriendsAdapter扩展FirestoreRecycle

嗨,我被困在这一部分,我有两个收集第一个是用户,第二个是朋友。我希望我的recyclerview在当前用户的帮助下在列表上显示我的朋友,因为在当前用户上存储了其他人的id,我希望它显示在recyclerview上,但当它显示时,我希望从存储用户名和电子邮件的用户那里获取他们的信息

我只希望在当前用户id的帮助下,朋友集合id显示在recyclerview上。然后我希望从用户集合中获取值,如他们的姓名和电子邮件值。

适配器

公共类FriendsAdapter扩展FirestoreRecyclerAdapter{

private OnItemClicklistener onItemClicklistener;

public FriendsAdapter(@NonNull FirestoreRecyclerOptions<AllUsers> options) {
    super(options);
}

@Override
protected void onBindViewHolder(@NonNull FriendsHolder holder, int position, @NonNull AllUsers model) {
    holder.textViewUsername.setText(String.valueOf(model.getName()));
    holder.textViewEmail.setText(model.getEmail());
    holder.setAvatar(model.getAvatar());

}

@NonNull
@Override
public FriendsHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.all_user_list_display, viewGroup, false);
    return new FriendsAdapter.FriendsHolder(view);
}

class FriendsHolder extends RecyclerView.ViewHolder {
    TextView textViewUsername;
    TextView textViewEmail;
    ImageView imageViewAvatar;

    public FriendsHolder(@NonNull View itemView) {
        super(itemView);

        textViewUsername = itemView.findViewById(R.id.all_user_username);
        textViewEmail = itemView.findViewById(R.id.all_user_userEmail);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int position = getAdapterPosition();
                if (position != RecyclerView.NO_POSITION && onItemClicklistener != null) {
                    onItemClicklistener.onItemClick(getSnapshots().getSnapshot(position), position);
                }
            }
        });
    }

    public void setAvatar(String avatar) {
        imageViewAvatar = (ImageView) itemView.findViewById(R.id.all_user_profile_image);
        Picasso.get().load(avatar).into(imageViewAvatar);
    }
}

public interface OnItemClicklistener {
    void onItemClick(DocumentSnapshot snapshot, int position);
}

public void setOnItemClickListener(FriendsAdapter.OnItemClicklistener listener) {
    onItemClicklistener = listener;
}
public class FriendsListFragment extends Fragment {

private FirebaseFirestore db;
private CollectionReference usersCollection;
private CollectionReference friendsCollection;
private DocumentReference friends;
private DocumentReference users;
private FirebaseUser current_user;

private FriendsAdapter adapter;
public SearchView search_friends;


public FriendsListFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_friends, container, false);


    current_user = FirebaseAuth.getInstance().getCurrentUser();

    //FIREBASE
    db = FirebaseFirestore.getInstance();
    usersCollection = db.collection("users");
    friendsCollection = db.collection("friends");
    friends = friendsCollection.document(current_user.getUid());

    Query friendQuery = usersCollection;

    FirestoreRecyclerOptions<AllUsers> options = new FirestoreRecyclerOptions.Builder<AllUsers>()
            .setQuery(friendQuery, AllUsers.class)
            .build();

    adapter = new FriendsAdapter(options);
    RecyclerView recyclerView = view.findViewById(R.id.friendsList);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    recyclerView.setAdapter(adapter);




    return view;
}

@Override
public void onStart() {
    super.onStart();
    adapter.startListening();
}
public class AllUsers {
public String name;
public String avatar;
public String email;
public String userId;

public AllUsers() {
}

public AllUsers(String name, String email, String avatar, String userId) {
    this.name = name;
    this.email = email;
    this.avatar = avatar;
    this.userId = userId;
}

public String getName() {
    return name;
}

public String getAvatar() {
    return avatar;
}

public String getEmail() {
    return email;
}

public void setAvatar(String avatar) {
    this.avatar = avatar;
}