Как получить идентификатор реселлера при нажатии на элемент? - PullRequest
0 голосов
/ 08 июня 2018

В основном у меня есть 4 рециркулятора, каждый с разными идентификаторами, я не хочу вдаваться в подробности причин, по которым я хочу, чтобы это произошло, поэтому мне нужно, чтобы при нажатии на любой элемент рециклера я мог получитьИдентификатор RECYCLER, а не элемент нажал.Это возможно?Я думаю, что это можно сделать с помощью адаптера, но я не знаю как.Это то, что я получил до сих пор, но itemView - это вид ячейки, а не переработчика.

РЕДАКТИРОВАТЬ: я решил свою проблему другим способом (так что не смотрите на это), мне просто любопытно, еслиможно получить идентификатор клика, а не пункт клика.

public class AlbumAdapter extends RecyclerView.Adapter {

    private List<Album> albumLista;
    private NotificadorAlbumCelda notificadorAlbumCelda;

    public AlbumAdapter(List<Album> albumLista, NotificadorAlbumCelda notificadorAlbumCelda) {
        this.albumLista = albumLista;
        this.notificadorAlbumCelda = notificadorAlbumCelda;
    }

    public void setAlbumLista(List<Album> albumLista) {
        this.albumLista = albumLista;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.celda_recycler_scroll, parent, false);
        ViewHolderAlbum viewHolderAlbum = new ViewHolderAlbum(view);
        return viewHolderAlbum;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        Album album = albumLista.get(position);
        ViewHolderAlbum viewHolderAlbum = (ViewHolderAlbum) holder;
        viewHolderAlbum.cargarAlbum(album);
    }

    @Override
    public int getItemCount() {
        if (albumLista != null) {
            return albumLista.size();
        } else {
            return 0;
        }
    }

    public class ViewHolderAlbum extends RecyclerView.ViewHolder {

        private TextView textViewNombreAlbum;
        private TextView textViewNombreArtista;
        private ImageView imagenAlbum;

        public ViewHolderAlbum(final View itemView) {
            super(itemView);
            textViewNombreAlbum = itemView.findViewById(R.id.titulo_fragment_album);
            textViewNombreArtista = itemView.findViewById(R.id.titulo_fragment_artista);
            imagenAlbum = itemView.findViewById(R.id.imagen_fragment_album);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //here is where I need to get the id
                    int idRecycler = itemView.getId();
                    int posicionAlbumClickeado = getAdapterPosition();
                    Album album = albumLista.get(posicionAlbumClickeado);
                    notificadorAlbumCelda.notificarCeldaClickeada(album, posicionAlbumClickeado, idRecycler);
                }
            });
        }

        public void cargarAlbum(Album album) {
            textViewNombreAlbum.setText(album.getTitulo());
            textViewNombreArtista.setText(album.getArtista().getNombre());
            imagenAlbum.setImageResource(album.getImagenAlbum());
        }
    }

    public interface NotificadorAlbumCelda {
        public void notificarCeldaClickeada(Album album, int posicion, int idRecycler);
    }
}

1 Ответ

0 голосов
/ 08 июня 2018

Зачем вам нужен идентификатор?Может быть, вы хотите знать, какой элемент представления рециркуляции является щелчком, если да, вы можете просто создать интерфейс с четырьмя методами, установить этот интерфейс для всех ваших повторений, и в элементе RecyclerView нажмите, просто вызовите соответствующий метод интерфейса.

public interface RecycleViewClickListener {

    void firstRecycleClick();
    void secondRecycleClick();
    void thirdRecycleClick();
    void fourthRecycleClick();

}

А для каждого вида повторного использования достаточно нажать

private RecycleViewClickListener recycleViewClickListener;

public void setRecycleViewClickListener(RecycleViewClickListener recycleViewClickListener) {
        this.recycleViewClickListener= recycleViewClickListener;
    }

 itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //here is where I need to get the id
                    recycleViewClickListener.firstRecycleClick();
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...