Получение идентификатора пользователя по нажатому элементу в recyclerView - PullRequest
2 голосов
/ 14 апреля 2019

Я извлекаю всех пользователей из базы данных Firebase и отображаю их в виде переработчика с помощью адаптера.Я хочу получить userID пользователя, на которого я нажимаю.Я попытался использовать код ниже, но он получает только идентификатор текущего пользователя.Как я могу получить userID пользователя, который щелкнул в представлении реселлера.Recyclerview отображает фотографию и имена пользователей.Я буду очень признателен за любые подсказки.

Вот код для обработки кликов по элементам. Он просто получает идентификатор текущего пользователя

public class FindFriendsActivity extends AppCompatActivity implements UsersAdapter.OnItemClickListener{
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_find_friends){

     recyclerView.setLayoutManager (new LinearLayoutManager ( this ) );
     mcontacts = new ArrayList <> ();

        mAdapter = new UsersAdapter ( this, mcontacts );
        recyclerView.setAdapter ( mAdapter );



        mdatabaseRef = FirebaseDatabase.getInstance ().getReference ( "Users" );

        mdatabaseRef.addValueEventListener ( new ValueEventListener () {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                mcontacts.clear ();

                for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren ()) {

                    Contacts contacts = dataSnapshot1.getValue(Contacts.class);
                    mcontacts.add(contacts);

                }

                mAdapter = new UsersAdapter ( getApplicationContext () , mcontacts );
                recyclerView.setAdapter ( mAdapter );

                mAdapter.setOnItemClickListener ( FindFriendsActivity.this );

            }
    @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        } );
}

}

                   //Handling clicks of users in the recyclerview
@Override
    public void onItemClick(int position) {

        Contacts conty = mcontacts.get ( position );

         FirebaseUser clickedUser = FirebaseAuth.getInstance ().getCurrentUser ();
        Toast.makeText ( this , "" + clickedUser.getUid () , Toast.LENGTH_SHORT ).show ();
}
}

Класс адаптера

public class UsersAdapter extends RecyclerView.Adapter<UsersAdapter.UsersViewHolder>{

    private Context mcontext;
    private List<Contacts> mcontacts;

    private OnItemClickListener mListener;

    public UsersAdapter(Context context, List<Contacts> contacts){

        mcontext = context;
        mcontacts = contacts;

    }

    @NonNull
    @Override
    public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup , int i) {

        View v = LayoutInflater.from ( mcontext ).inflate ( R.layout.users_display_layout, viewGroup, false );
        return new UsersViewHolder ( v );

    }

    @Override
    public void onBindViewHolder(@NonNull UsersViewHolder usersViewHolder , int i) {

        Contacts contactsCurrent  = mcontacts.get ( i );
        usersViewHolder.nameOfUser.setText ( contactsCurrent.getName () );                    //'''''''''''''''''''''''''''''
        usersViewHolder.nameOfTown.setText ( contactsCurrent.getTownname () );        //''''''''''''''''''''''''''''''

        Picasso.get ().load ( contactsCurrent.getImage () ).placeholder ( R.drawable.person_account ).into ( usersViewHolder.usersImage );      //''''''''''''''''''''''''''''''''

    }

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

    public class UsersViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

             public TextView nameOfUser;
             public TextView nameOfTown;
             public CircleImageView usersImage;

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

            nameOfUser = itemView.findViewById ( R.id.user_profile_name );
            nameOfTown = itemView.findViewById ( R.id.user_town_name );
            usersImage = itemView.findViewById ( R.id.users_profile_image );

            itemView.setOnClickListener ( this );

            usersImage.setOnClickListener ( new View.OnClickListener () {
                @Override
                public void onClick(View v) {

                   // Toast.makeText ( v.getContext () , "USER FRIEND" , Toast.LENGTH_SHORT ).show ();
                    if (mListener != null){
                        int position = getAdapterPosition ();
                        if (position != RecyclerView.NO_POSITION){
                            mListener.onItemClick ( position );
                        }
                    }
                }
            } );



        }

        @Override
        public void onClick(View v) {
               if (mListener != null){
                   int position = getAdapterPosition ();
                   if (position != RecyclerView.NO_POSITION){

                       mListener.onItemClick ( position );

                   }
               }
        }
    }

    public interface OnItemClickListener{

        void onItemClick(int position);


    }

    public void setOnItemClickListener(OnItemClickListener listener){

        mListener = listener;

    }

}

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