@Comatu

Почему не вызывается метод startActivity?

Делаю такую логику приложения: переход в другую активность при нажатии элемента RecyclerView. Слушатель добавил в onBindViewHolder, срабатывает нормально, тестовое сообщение появляется после нажатия. Но при написании кода студия красит красным метод startActivity, не могу понять почему. Подскажите пожалуйста возможные причины, может кто сталкивался с таким/ Код адаптера привожу полностью:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {

    private List<Book> booksList;

    public RecyclerAdapter(List<Book> booksList) {

        this.booksList = booksList;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        Context context = parent.getContext();
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.card, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        Book book = booksList.get(position);
/**
 * Загрузка обложки из интернета. Сссылки в MainActivity
 */
        Picasso
                .with(holder.imgObl.getContext())
                .load(book.getResId())
                .into(holder.imgObl);
/**
 * обработка нажатия на элемент списка RecyclerView
  */
        holder.imgObl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                Toast.makeText(holder.imgObl.getContext(),
//                "Пойдем читать " + position, Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(holder.imgObl.getContext(), SliderActivity.class);
                startActivity(intent);
            }
        });
    }

    @Override
    public int getItemCount() {
        return booksList.size();
    } //считает количество элементов в списке


    public static class ViewHolder extends RecyclerView.ViewHolder {

        ImageView imgObl;
        CardView cv;

        public ViewHolder(View itemView) {
            super(itemView);
            imgObl = (ImageView) itemView.findViewById(R.id.iv_recycler_item);
            cv = (CardView) itemView.findViewById(R.id.card_view);
        }
    }

}
  • Вопрос задан
  • 719 просмотров
Решения вопроса 1
@Comatu Автор вопроса
holder.imgObl.getContext().startActivity(intent);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mitaichik
@mitaichik
Наведите курсором мыши на красноту и студая сама вам все объяснит. А так - адаптер не имеет метода startActivity. И так как это не какой-то внутренний класс активити, вызвать его неоткуда.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы