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

Как перейти в другую активити при нажатии на RecycleView во фрагменте

16.04.2019, 20:22. Показов 1230. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть фрагмент, который помещён во вкладках. Во фрагменте есть RecyclerView и при нажатии на него нужно переходить в активити. Активити нужно заполнять из базы в зависимости от id нажатого элемента. Получается, что нужно просто обработать нажатие и перейти в активи, предварительно передав id, НО нельзя перейти из фрагмента в активити при помощи intent. ПОМОГИТЕ, ПОЖАЛУЙСТА!!!

Фрагмент с RV
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
public class BissinessFragment extends LoadFragment implements SwipeRefreshLayout.OnRefreshListener{
 
    LinearLayoutManager mLinearLayoutManager;
    List<BissinessList> BissinessLists = new ArrayList<>();                                                                            
    RecyclerView recyclerView = null;
    BissinessAdapter adapterList;
    FirebaseFirestore db;
    FirebaseAuth mAuth;
    FirebaseUser user;
    View view;
    Intent intent;
 
    private SwipeRefreshLayout mSwipeRefreshLayout;
 
    @SuppressLint("ClickableViewAccessibility")
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_bissiness, container, false);
 
        FirebaseApp.initializeApp(getContext());
        recyclerView = view.findViewById(R.id.list);
        db = FirebaseFirestore.getInstance();
        mLinearLayoutManager = new LinearLayoutManager(getActivity());
        mAuth = FirebaseAuth.getInstance();
        user = mAuth.getCurrentUser();
 
        if (isOnline(getContext()) && !bissinessLists.isEmpty()){
            bissinessLists.clear();
            dbInit();
        } else if (isOnline(getContext())){
            bissinessLists.clear();
            showProgressDialog();
            dbInit();
        }
 
        bissinessLists = new ArrayList<>();
 
        return view;
    }
 
    public void dbInit(){
        db.collection("bissiness")
                .orderBy("Date")
                .get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()){
                            for (QueryDocumentSnapshot document : task.getResult()) {
                                if (document.getString("STATUS").equals("1"))
                                bissinessLists.add(new BissinessList(document.getId(), document.getString("Title"),
                                        document.getString("Invest"), document.getString("Stage")));
 
                            }
                            Collections.reverse(bissinessLists);
                            adapterList = new BissinessAdapter(getContext(), bissinessLists);                                                
 
                            hideProgressDialog();
                            recyclerView.setAdapter(adapterList);
                            mSwipeRefreshLayout.setRefreshing(false);
                        } else
                            hideProgressDialog();
                    }
                });
    }
}// end BisinnessFragment.java
Адаптер для RV
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
public class BissinessAdapter extends RecyclerView.Adapter<BissinessAdapter.ViewHolder>{
 
    private LayoutInflater inflater;
    private List<BissinessList> announcmentRecyclerList;
 
    public BissinessAdapter(Context context, List<BissinessList> ad) {
        this.announcmentRecyclerList = ad;
        this.inflater = LayoutInflater.from(context);
    }
    @Override
    public BissinessAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
 
        View view = inflater.inflate(R.layout.template_bissiness, parent, false);
        return new ViewHolder(view);
    }
 
    @Override
    public void onBindViewHolder(final BissinessAdapter.ViewHolder holder, int position) {
        final BissinessList ad = announcmentRecyclerList.get(position);
 
        holder.imageView.setImageResource(ad.getImage());
        holder.title.setText(ad.getTitle());
        holder.invest.setText(ad.getInvest());
        holder.stage.setText(ad.getStage());
    }
 
    @Override
    public int getItemCount() {
        return announcmentRecyclerList.size();
    }
 
 
 
    public class ViewHolder extends RecyclerView.ViewHolder {
        final ImageView imageView;
        final TextView title;
        final TextView invest;
        final TextView stage;
        final LinearLayout linearLayout;
 
        ViewHolder(View view){
            super(view);
            imageView = (ImageView)view.findViewById(R.id.image);
            title = (TextView) view.findViewById(R.id.title);
            invest = view.findViewById(R.id.invest);
            stage = view.findViewById(R.id.stage);
            linearLayout = view.findViewById(R.id.bissinessAllLayout);
        }
    }
}
Макет
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
public class BissinessList {
 
        private String title;
        private String invest;
        private String stage;
        private String id;
        private int image;
 
        public BissinessList(String id , String title, String invest, String stage){
            this.id = id;
            this.title = title;
            this.invest = invest;
            this.stage = stage;
            this.image = R.drawable.startupdark;
        }
 
        public String getTitle() { return title; }
        public void setTitle(String title) { this.title = title; }
        public int getImage() { return image; }
        public void setImage(int image) { this.image = image; }
        public String getInvest() { return invest; }
        public void setInvest(String invest) {  this.invest = invest;  }
        public String getStage() { return stage; }
        public void setStage(String stage) { this.stage = stage;}
        public String getId() { return id; }
        public void setId(String id) {this.id = id;}
}
Добавлено через 1 час 29 минут
Задача с переходом решилась, но передаётся id только первого элемента. Добавил

Java
1
2
3
4
5
6
7
8
9
    @Override
    public void onBindViewHolder(final BissinessAdapter.ViewHolder holder, int position) {
        final BissinessList ad = announcmentRecyclerList.get(position);
        id = ad.getId();
        holder.imageView.setImageResource(ad.getImage());
        holder.title.setText(ad.getTitle());
        holder.invest.setText(ad.getInvest());
        holder.stage.setText(ad.getStage());
    }
Java
1
2
3
4
5
    @Override
    public void onClick(View v) {
        intent.putExtra("id", id);
        context.startActivity(intent);
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.04.2019, 20:22
Ответы с готовыми решениями:

Как перейти с одной формы на другую при нажатии кнопки
Есть форма Допустим Form1,и на ней есть кнопка(button1) при нажатии на которую она должна перейти на уже созданую Form2. Можете...

Как при нажатии на пункт ListView перейти на другую форму
Здравствуйте! У меня возникла проблема при работе с ListView. Суть проблему заключается в следующем при нажатии одного из пункта нужно...

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

2
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
16.04.2019, 21:21
В адаптере должно быть что-то типо такого:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private OnClickListener onClickListener;
public interface OnClickListener {
        void onClick(String id);
    }
...
class ViewHolder extends RecyclerView.ViewHolder {
 
...
       ViewHolder(View itemView) {
            super(itemView);
 
            itemView.setOnClickListener(view -> {
                if (getAdapterPosition() != RecyclerView.NO_POSITION)
                    onClickListener.onClick(kakoytolist.get(getAdapterPosition()).getId());
            });
        }
    }
0
0 / 1 / 0
Регистрация: 12.09.2017
Сообщений: 134
16.04.2019, 21:35  [ТС]
ExFau$t, спасибо за ответ. Сделал по-другому:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    @Override
    public void onBindViewHolder(final BissinessAdapter.ViewHolder holder, int position) {
        final BissinessList ad = announcmentRecyclerList.get(position);
 
        holder.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent.putExtra("id", ad.getId());
                context.startActivity(intent);
            }
        });
 
        holder.imageView.setImageResource(ad.getImage());
        holder.title.setText(ad.getTitle());
        holder.invest.setText(ad.getInvest());
        holder.stage.setText(ad.getStage());
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2019, 21:35
Помогаю со студенческими работами здесь

при нажатии - перейти в другую форму
добрый вечер) как мне сделать , чтобы в одной форме были кнопки, при нажатии на которые, открывались другие формы?

Поймать статус соединения с сервером и перейти в другую активити
Привет всем! подскажите пожалуйста, подключаюсь на входной форме к серверу mySQL, ввожу логин и пароль. Это в форме MainActivity. Для...

Вывод во втором фрагменте длины текста, введённого в первом фрагменте активити
Создать активити с двумя фрагментами. В первый фрагмент должен содержать поле ввода, второй текстовое поле. Выводить во втором фрагменте...

Как при нажатии одного радиобаттона показать одну картинку, а при нажатии другого другую
Как сделать так, чтобы при нажатие одного радиобаттона появлялась одна картинка, а при нажатие другого другая, подскажите.

Как перейти на другую строку при записи в файл
Записываю двумерный массив в паскаль как мне перейти на новую строку. var a:array of char; F1,F2:text; N,i,j:integer; begin ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru