Как получить только данные о зарегистрированных пользователях из firebase и заполнить пользователя только этой информацией - PullRequest
0 голосов
/ 14 мая 2018

Я хотел бы знать, как заполнить эту область просмотра только данными текущего вошедшего в систему пользователя, получающего данные из firebase. Я понятия не имею, с чего начать.

public class UsersViewHolder extends RecyclerView.Adapter<UsersViewHolder.ViewHolder> {
    private Context context;
    private List<Users> UserList;

    public UsersViewHolder(Context context, List<Users> uList) {
        this.context = context;
        this.UserList = ulist;
    }

    @Override
    public UsersViewHolder.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).

       inflate(R.layout.activity_mydetails,parent,false);

        return new UsersViewHolder.ViewHolder(view ,context);
    }

    @Override
    public void onBindViewHolder(UsersViewHolder.ViewHolder holder, final int position) {

        final Users users =UserList.get(position);


        holder.UserFirstName.setText(users.getUserfirstname());
        holder.UserSurname.setText(users.getUserlastname());
        holder.UserAddress.setText(users.getUseraddress());
        holder.UserPostcode.setText(users.getUserpostcode());
        holder.UserColourPreference.setText(users.getUsercolourpreference());
        holder.UserShoeSize.setText(users.getUsershoesize());
        holder.UserTopSize.setText(users.getUsertopsize());
        holder.UserWaistSize.setText(users.getUserwaistsize());

    }

    @Override
    public int getItemCount() {
        return UserList.size();//Returns all values
    }


    public class ViewHolder extends RecyclerView.ViewHolder {
        private TextView UserFirstName,UserSurname,UserAddress,UserPostcode,UserColourPreference,UserShoeSize,UserTopSize,UserWaistSize;

        String Userid;

        public  ViewHolder(View view,Context state){

            super (view);
            context =state;

            UserFirstName = view.findViewById(R.id.FirstNameID);
            UserSurname =view.findViewById(R.id.SurnameID);
            UserAddress =view.findViewById(R.id.AddressID);
            UserPostcode=view.findViewById(R.id.PostcodeID);
            UserColourPreference=view.findViewById(R.id.ColourPreferenceSpinnerID);
            UserShoeSize=view.findViewById(R.id.ShoeSizeSpinnerID);
            UserTopSize=view.findViewById(R.id.TopSizeSpinnerID);
            UserWaistSize=view.findViewById(R.id.WaistSizeSpinnerID);

            Userid = null;
        }
    }
}

Адаптер

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mydetails);

    FirebaseUserAuthentication = FirebaseAuth.getInstance();
    FirebaseUserLoggedIn= FirebaseUserAuthentication.getCurrentUser();
    UserDatabase = FirebaseDatabase.getInstance();
    UserDatabaseref = UserDatabase.getReference().child("Threads Users");
    UserDatabaseref.keepSynced(true);
    UserDetails = new ArrayList<>();
    PopulateListView = findViewById(R.id.RecyclerViewOBJ);
    PopulateListView.setHasFixedSize(true);
    PopulateListView.setLayoutManager(new LinearLayoutManager(this));
    //PopulateListView.setReverseLayout(True);

}

@Override
protected void onStart()
{
    super.onStart();

    UserDatabaseref.addChildEventListener(new ChildEventListener()
    {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

            Users details =  dataSnapshot.getValue(Users.class);
            UserDetails.add(details);
            Collections.reverse(UserDetails);
            Uviewholder = new UsersViewHolder(mydetails.this,UserDetails);
            PopulateListView.setAdapter(Uviewholder);
            Uviewholder.notifyDataSetChanged();

        }

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете сделать это:

 UserDatabaseref.addChildEventListener(new ChildEventListener()
     {
         @Override
         public void onChildAdded(DataSnapshot dataSnapshot, String s) {

          Users details =  dataSnapshot.getValue(Users.class);
        If(dataSnapshot.getKey().equals(FirebaseUserLoggedIn.getUid())){
                UserDetails.add(details);
       }
        Collections.reverse(UserDetails);
        Uviewholder = new UsersViewHolder(mydetails.this,UserDetails);
        PopulateListView.setAdapter(Uviewholder);
        Uviewholder.notifyDataSetChanged();

    }

Таким образом, только когда идентификатор полученного пользователя совпадает с зарегистрированным пользователем, он будет добавлен к источнику данных, который будет передан владельцу представления. Теперь ваш владелец просмотра сможет показывать информацию только о зарегистрированном пользователе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...