Получение Uid из базы данных Firebase - PullRequest
0 голосов
/ 10 декабря 2018

В настоящее время я работаю над приложением для чата.Моя цель - получить конкретный идентификатор (отмеченный на картинке) при нажатии на это имя пользователя и отобразить его в logcat.

На этих изображениях показаны значения, которые необходимо получить.enter image description here

Вот класс ViewHolder и класс адаптера для View переработчика.

public class UsersAdapterClass extends RecyclerView.Adapter<UsersAdapterClass.UsersViewHolder>{
    Context context;
    List<Users> usersList;
    FirebaseDatabase firebaseDatabase;
    DatabaseReference db;
    public UsersAdapterClass(Context context, List<Users> usersList) {
        this.context = context;
        this.usersList = usersList;
    }

    @Override
    public UsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.users_single_layout,parent,false);
        UsersViewHolder usersViewHolder = new UsersViewHolder(view);
        return usersViewHolder;
    }

    @Override
    public void onBindViewHolder(UsersViewHolder holder, int position) {
        Users users =  usersList.get(position);
        holder.name.setText(users.getName());
        holder.status.setText(users.getStatus());
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                firebaseDatabase= FirebaseDatabase.getInstance();
                db = firebaseDatabase.getInstance().getReference("Users");
                final String firebaseId2 = db.push().getKey();
                Log.d("User ID",firebaseId2);
            }
        });

    }

    @Override
    public int getItemCount() {
        return usersList.size();
    }

    public class UsersViewHolder extends RecyclerView.ViewHolder{

        CircleImageView image;
        TextView name,status;

        public UsersViewHolder(View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.circleImageView);
            name = itemView.findViewById(R.id.users_displayname);
            status = itemView.findViewById(R.id.users_status);
        }

        public CircleImageView getImage() {
            return image;
        }
    }
}

Также это код для класса, который содержит View переработчика.

public class UsersMainActivity extends AppCompatActivity {

    private Toolbar mToolbar;
    RecyclerView mRecyclerView;
    UsersAdapterClass adapter;
    private DatabaseReference mUserDatabase;
    List<Users> usersList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_users_main);
        mToolbar = findViewById(R.id.allusers_appbar);
        mRecyclerView = findViewById(R.id.allusers_recyclerView);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setTitle("All users");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users");

        usersList = new ArrayList<>();

        DatabaseReference dbUsers = FirebaseDatabase.getInstance().getReference("Users");
        dbUsers.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                if(dataSnapshot.exists())
                {
                    for(DataSnapshot userSnapshot:dataSnapshot.getChildren())
                    {
                        Users u = userSnapshot.getValue(Users.class);
                        usersList.add(u);
                    }
                    adapter = new UsersAdapterClass(UsersMainActivity.this,usersList);
                    mRecyclerView.setAdapter(adapter);

                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });    
    }
}

1 Ответ

0 голосов
/ 10 декабря 2018

Основываясь на структуре вашей базы данных, идентификаторы пользователей станут ключевыми, когда вы просматриваете полученный снимок.Чтобы получить ключи, просто наберите getKey() для вашего зацикленного снимка данных.Вы можете сделать это, добавив ниже код между вашим циклом и зарегистрировать его в Logcat ...

String userIds = userSnapshot.getKey(); //Get keys
Log.d("USERID KEYS", userIds) //Log to logcat

РЕДАКТИРОВАТЬ: Создать getter и setter для идентификатора пользователя в вашей User модели / POJO.Затем передайте userIds установщику.Например u.setUserId(userIds).Теперь в вашем адаптере просто получите userid в вашем onclick()

...
     @Override
     public void onClick(View v) {

         Log.d("User ID",user.getUserId());
    }
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...