Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 28.06.2017
Сообщений: 49

Контекстное меню RecyclerView

26.12.2017, 22:49. Показов 2628. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Возникла задача создать контекстное меню для recyclerView, при выборе элемента меню должно открыться другое Activity.
Контекстное меню сделал, но при выборе item'а меню приложение падает.

вот код адаптера для RecyclerView
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package com.example.q.recyclerpopmenu;
 
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
 
import java.util.List;
 
/**
 * Created by q on 26.12.2017.
 */
 
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
 
    private List<Model> models;
    private LayoutInflater layoutInflater;
    private Context context;
 
    public Adapter(List<Model> models, Context context) {
        this.models = models;
        this.context = context;
        this.layoutInflater = LayoutInflater.from(context);
    }
 
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = layoutInflater.inflate(R.layout.row, parent, false);
        return new ViewHolder(view);
    }
 
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
 
        final View view = holder.itemView;
        holder.img.setImageResource(models.get(position).getIdImg());
        holder.title.setText(models.get(position).getTitle());
 
        holder.img.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
            @Override
            public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
                menu.add("next");
                menu.getItem(0).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                        view.getContext().startActivity(new Intent(view.getContext(), Main2Activity.class));
                        return false;
                    }
                });
            }
        });
    }
 
    @Override
    public int getItemCount() {
        return models.size();
    }
 
    public class ViewHolder extends RecyclerView.ViewHolder
    {
 
        private final TextView title;
        private final ImageView img;
 
        public ViewHolder(View itemView) {
            super(itemView);
 
            title = itemView.findViewById(R.id.title);
            img = itemView.findViewById(R.id.img);
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.12.2017, 22:49
Ответы с готовыми решениями:

Контекстное меню в ListView
Здравствуйте,выложите пожалуйста рабочий код контекстного меню для listview и напишите пожалуйста куда вставлять этот код.

ListView и контекстное меню
Подскажите как сделать так, чтобы контекстное меню знало пункт listview из которого оно было вызвано? Пытался сохранить пункт в...

Контекстное меню на ExpandableListView
Здравствуйте! подскажите как правильно определить пункт ExpandableListView (группа или элемент группы) на котором было вызвано...

7
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
27.12.2017, 01:42
Не вникая в код, в ванга-режиме, т.к. лога нету, вместо вот этого непонятно чего: view.getContext() поставить просто context.
0
1 / 1 / 0
Регистрация: 28.06.2017
Сообщений: 49
27.12.2017, 23:36  [ТС]
пробовал через context, безуспешно
в логе жалуется на строчку в коде
Java
1
 context.startActivity(new Intent(view.getContext(), Main2Activity.class));
лог
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
12-27 20:32:26.502 4393-4393/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: com.example.q.recyclerpopmenu, PID: 4393
                                                 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
                                                     at android.app.ContextImpl.startActivity(ContextImpl.java:1034)
                                                     at android.app.ContextImpl.startActivity(ContextImpl.java:1021)
                                                     at android.content.ContextWrapper.startActivity(ContextWrapper.java:311)
                                                     at com.example.eminem.recyclerpopmenu.Adapter$1$1.onMenuItemClick(Adapter.java:52)
                                                     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:147)
                                                     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:881)
                                                     at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167)
                                                     at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:941)
                                                     at android.widget.AdapterView.performItemClick(AdapterView.java:299)
                                                     at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
                                                     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
                                                     at android.widget.AbsListView$3.run(AbsListView.java:3638)
                                                     at android.os.Handler.handleCallback(Handler.java:733)
                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                     at android.os.Looper.loop(Looper.java:136)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5017)
                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                     at dalvik.system.NativeStart.main(Native Method)
12-27 20:32:27.252 2711-2711/com.android.launcher E/EGL_emulation: tid 2711: eglSurfaceAttrib(1199): error 0x3009 (EGL_BAD_MATCH)
12-27 20:32:27.942 2349-2624/system_process E/SoundPool: error loading /system/media/audio/ui/Effect_Tick.ogg
12-27 20:32:27.942 2349-2624/system_process E/SoundPool: error loading /system/media/audio/ui/Effect_Tick.ogg
12-27 20:32:27.942 2349-2624/system_process E/SoundPool: error loading /system/media/audio/ui/Effect_Tick.ogg
12-27 20:32:27.942 2349-2624/system_process E/SoundPool: error loading /system/media/audio/ui/Effect_Tick.ogg
12-27 20:32:27.942 2349-2624/system_process E/SoundPool: error loading /system/media/audio/ui/Effect_Tick.ogg
12-27 20:32:27.942 2349-2624/system_process E/SoundPool: error loading /system/media/audio/ui/KeypressStandard.ogg
12-27 20:32:27.942 2349-2624/system_process E/SoundPool: error loading /system/media/audio/ui/KeypressSpacebar.ogg
12-27 20:32:27.942 2349-2624/system_process E/SoundPool: error loading /system/media/audio/ui/KeypressDelete.ogg
12-27 20:32:27.942 2349-2624/system_process E/SoundPool: error loading /system/media/audio/ui/KeypressReturn.ogg
12-27 20:32:27.942 2349-2624/system_process E/SoundPool: error loading /system/media/audio/ui/KeypressInvalid.ogg
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
27.12.2017, 23:50
Это неправильно, вызов активити должен быть из другой активити, передайте интерфейс внутрь адаптера и вызывайте его метод,а в активити , в котором создан адаптер вызывайте Main2Activity
0
1 / 1 / 0
Регистрация: 28.06.2017
Сообщений: 49
28.12.2017, 00:09  [ТС]
все понял, кроме "передайте интерфейс внутрь адаптера и вызывайте его метод" - это как?
можно пример, как это должно быть?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
28.12.2017, 01:40
Или добавить, как просят, FLAG_ACTIVITY_NEW_TASK и не заморачиваться.
1
1 / 1 / 0
Регистрация: 28.06.2017
Сообщений: 49
28.12.2017, 09:40  [ТС]
Да... Спасибо, что помогли разобраться
Так сделал
Java
1
2
Intent intent = new Intent(context, Main2Activity.class);
                context.startActivity(intent.setFlags(FLAG_ACTIVITY_NEW_TASK));
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
29.12.2017, 00:57
callback interface android
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.12.2017, 00:57
Помогаю со студенческими работами здесь

Контекстное меню не работает
Доброго времени суток. Я отбираю записи из базы и формирую список в ListView, насаживая на каждый элемент событие onClick, чтобы...

Контекстное меню вместо опционального
Здравствуйте! Подскажите, возможно ли сделать так, чтобы при нажатии кнопки меню на телефоне, вместо опционального меню открывалось...

При долгом нажатии вывести контекстное меню
Здравствуйте, подскажите, пожалуйста, как сделать так, чтобы при долгом нажатии на адресную строку, выводилось контекстное меню. Браузер...

Advanced RecyclerView и Expandable RecyclerView
Сделал expandable recycler view на основе advancedRecyclerView сборочки, но не важно это думаю, наследуется от обычного RecyclerView. ...

RecyclerView внутри recyclerView
Добрый день. Хочу сделать список recyclerView c горизонтальной прокруткой, который отображает допустим 20 элементов(card). Т.е....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru