getAdapterPosition не работает (v24)

#android #android-recyclerview #onclicklistener #cardview

#Android #android-recyclerview #onclicklistener #просмотр карты

Вопрос:

Я использую держатель представления привязки, но по некоторым причинам я получаю сообщение «не удается разрешить ошибку метода». Как вы можете видеть, это моя первая попытка, поэтому я, возможно, совершаю какую-то огромную ошибку. Я пробовал несколько методов, но ни один из них, похоже, не работает.

 package com.techhgeeks.techhgeeks;
import android.support.v7.widget.RecyclerView;
import android.content.Context;
import android.widget.ImageView;
import android.widget.TextView;


import android.view.LayoutInflater;
import java.util.List;
import com.bumptech.glide.Glide;
import android.view.View;
import android.view.ViewGroup;




public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener {
    private Context context;
    private List<MyData> my_data;

    public MyAdapter(Context context, List<MyData> my_data) {
        this.context = context;
        this.my_data = my_data;
    }



    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_child,parent,false);

        return new ViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        holder.description.setText(my_data.get(position).getDescription());
        Glide.with(context).load(my_data.get(position).getImage_link()).into(holder.imageView);

    }

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

    @Override
    public void onClick(View view) {
        int position = getAdapterPosition();

    }


    public  class ViewHolder extends  RecyclerView.ViewHolder{

        public TextView description;
        public ImageView imageView;

        public ViewHolder(View itemView) {
            super(itemView);
            description = (TextView) itemView.findViewById(R.id.textView);
            imageView = (ImageView) itemView.findViewById(R.id.image);
        }


    }


}
  

Комментарии:

1. Где выдается сообщение «не удается разрешить ошибку метода»?

Ответ №1:

Я обнаружил проблему, которая заключается в том, что вы используете getAdapterPosition в неправильном месте.

Сначала удалите эту часть в исходном коде (onClick):

 int position = getAdapterPosition();
  

Во-вторых, измените метод onCreateViewHolder .

 @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_child, parent, false);
    final ViewHolder holder = new ViewHolder(itemView);
    itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int position = holder.getAdapterPosition();
        }
    });
    return new ViewHolder(itemView);
}
  

Комментарии:

1. Я использую ‘com.android.support: recyclerview-версия 7: 24.0. ‘

2. Пробовал перестроить, очистить bulid … та же ошибка «не удается разрешить метод getAdapterPosition» Вы уверены, что в моем коде нет ничего плохого?

3. Метод getAdapterPosition находится в классе ViewHolder .

4. конструктор Intent не работает при этом методе onClick

Ответ №2:

getAdapterPosition() являются частью версии 22 библиотеки поддержки. Вы не можете решить эту проблему, потому что вы все еще используете версию 21. Изменить

 'com.android.support:recyclerview-v7:21.0. '
  

Для

 'com.android.support:recyclerview-v7:24.0.0'
  

затем создайте проект.

Комментарии:

1. Я уже использую ‘com.android.support: recyclerview-v7: 24.0.0’