getAdapterPosition возвращает мне NO_POSITION, возвращает фактическое (adapterposition - 1) - PullRequest
0 голосов
/ 02 мая 2020

Я использую Retrofit, чтобы получить json, и я помещаю в базу данных комнат. Затем я использую Recyclerview, чтобы показать данные. Но в первый раз, когда я застрял в проблеме, когда getadApterPositoin () возвращает мне NO_POSITION OR (ACTUAL position адаптера - 1).
Я прочитал много статей, но все еще не уверен, как это исправить. Если требуется какой-либо код, пожалуйста, укажите.
Код ViewHolder

public class ViewHolder extends RecyclerView.ViewHolder {
        ImageView image;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.iv_main_photo);
            image.setOnClickListener(v -> {
                int pos = getAdapterPosition();
                if (pos != RecyclerView.NO_POSITION){
                    Log.e("adapter", "No position if statement");
                }
                else {
                    Log.e("adapter", "POSITION else statement");
                }
//                Intent intent = new Intent(context, PictureInfoPage.class);
//                intent.putExtra("position", getAdapterPosition());
                Log.e("MainPageAdapter", getAdapterPosition() + "");
//                context.startActivity(intent);
            });
        }
    }

Может кто-нибудь объяснить мне, что не так, где я пропускаю?

1 Ответ

0 голосов
/ 02 мая 2020

Что-то не так в вашем состоянии, замените его на:

 if (pos == RecyclerView.NO_POSITION){
                Log.e("adapter", "No position if statement");
            }
            else {
                Log.e("adapter", "POSITION else statement");

, потому что pos работает правильно, но RecyclerView.NO_POSITION возвращает -1, поэтому вы видите неправильный результат.

...