Как получить позицию из Адаптера и отправить ее в Activity - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь получить позицию выбранного элемента из адаптера и отправить его в действие, но не могу заставить его работать.

public void onBindViewHolder(@NonNull HomeViewHolder holder, int position) {
...
...
}

Я пытался получить позицию из onBindViewHolder и затем отправьте его в действие и вызовите его в массиве:

private int[] images = {R.raw.glasses1, R.raw.glasses3, R.raw.glasses4, R.raw.glasses5,
        R.raw.glasses6, R.raw.glasses7, R.raw.glasses8, R.raw.glasses9, R.raw.glasses10}; 

, затем вызовите

images[position]

Ответы [ 4 ]

1 голос
/ 04 мая 2020

Он работал с использованием метода getAdapterPosition (). Внутри onBindViewHolder () я создал метод onListener (), как показано ниже:

 @Override
public void onBindViewHolder(@NonNull HomeViewHolder holder, int position) {
    ...
    ...
holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            int pos=holder.getAdapterPosition();
            Intent intent = new Intent(v.getContext(), ArActivity.class);
            intent.putExtra("pos",pos);

        }
    });
}

, а затем получил данные в действии, как показано ниже в onCreate () метод:

@Override
protected void onCreate(Bundle savedInstanceState){
    Bundle extras = getIntent().getExtras();
    if(extras!=null){
         pos=extras.getInt("pos");

    }

где 'pos' объявлен внутри класса активности.

1 голос
/ 04 мая 2020

При обработке событий на элементе, таких как щелчок, всегда следует использовать метод getAdapterPosition() объекта-держателя вместо position в onBindViewHolder(), поскольку он не обновляется.

1 голос
/ 04 мая 2020

Позиция выбранного элемента в Adapter сохраняется в методах getAdapterPosition() и getPosition(). Между ними есть разница, вы можете проверить, что здесь . Я предлагаю вам использовать getAdapterPosition() Всякий раз, когда вы пожелали получить Position предмета, по которому щелкнули.

1 голос
/ 04 мая 2020

попробуйте getAdapterPostion() метод в вашем адаптере и внедрите прослушиватель для перехода к действию

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