Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
asttoxa
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 66
1

Вызов диалогового окна

24.01.2017, 15:22. Просмотров 927. Ответов 1
Метки нет (Все метки)

Добрый день.

В основном активити есть список RecycleView для добавления в список есть кнопка в этом активити.
При нажатии кнопки открываю диалоговое окно.
Java
1
2
3
      DialogFragment dlg = new DialogEditArom(myDataset,mAdapter,-1);
            dlg.setCancelable(false);
            dlg.show(getFragmentManager(), "dlg");
Передаю в класс диалога ArrayList, адаптер RecycleView, и -1 (создание новой строки)
В самом диалоге есть вьюхи для заполнения текстом на основе, которых создается еще одна строка..

Это то что есть

Теперь то что я не пойму как сделать. Мне нужно, чтобы этот же диалог открывался при нажатии на строку RecycleView, но для редактирования этой строки. Тоесть, чтобы при открытии диалога все EditText уже были заполнены тесктом с этой строки.

Думал, что можно сделать в методе onBindViewHolder() моего адаптера поставить что то типо такого:
Java
1
2
3
4
5
6
7
8
9
10
 holder.card_view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
           
DialogFragment dlg = new DialogEditArom(myDataset,mAdapter,position);
            dlg.setCancelable(false);
            dlg.show(getFragmentManager(), "dlg");
 
            }
        });
И запускать диалоговое окно... Но тут проблема в getFragmentManager и можно ли притащить в класс Адаптера, объект этого самого адаптера. Вернее притащить то можно. Но правильно ли это будет?

Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2017, 15:22
Ответы с готовыми решениями:

Обратиться к элементу диалогового окна
Доброй ночи. Есть activity, есть диалоговое окно, на котором расположен text...

Изменить цвет диалогового окна
В манифесте указан стиль AppTheme и лайауты отображаются светлыми. Как...

Реально ли из диалогового окна запустить активити?
Сразу скажу, речь не о том диалоговом окне, о котором я писал в теме "Дождаться...

Обновить значение EditText после получения данных от диалогового окна
Здравствуйте. В моем приложении есть несколько EditText'ов. При нажатии на...

Реализовать вызов диалогового окна по выделении LineEdit'a
Доброго времени суток. Есть проект, в lineEdita'x вводятся значения и выводит...

1
Pablito
2810 / 2235 / 753
Регистрация: 12.05.2014
Сообщений: 7,819
Завершенные тесты: 1
24.01.2017, 15:58 2
я покажу минимум кода, что бы было понятно что изменить в адаптере, а что добавить
практически типичный RecyclerView.Adapter
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
class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {
 
    private final CustomAdapterCallback listener;
 
    CustomAdapter(ArrayList<String> list, CustomAdapterCallback listener) {
        this.listener = listener; // слушатель куда мы будем отправлять позицию по которой кликнули
    }
 
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // создаем вью как обычно
        return new ViewHolder(view, listener); // пробрасываем слушателя дальше, в холдер
    }
 
    static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
 
        private final CustomAdapterCallback listener;
 
        ViewHolder(View view, CustomAdapterCallback listener) {
            super(view);
            this.listener = listener;
            this.itemView.setOnClickListener(this);
        }
 
        @Override
        public void onClick(View view) {
            listener.onItemClick(getAdapterPosition());
        }
    }
 
    interface CustomAdapterCallback {
        void onItemClick(int pos);
    }
}
фрагмент
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class BlankFragment extends Fragment implements CustomAdapter.CustomAdapterCallback {
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle b) {
        // лишний код вырезан
        recyclerView.setAdapter(new CustomAdapter(list, this)); // в адаптер передаем список или что там и ссылку на слушатель - это и есть наш фрагмент
        return view;
    }
 
    @Override
    public void onItemClick(int pos) {
        // тут берем из списка строку или позицию по которой нажали и передаем в диалог
    }
}
Добавлено через 14 секунд
я покажу минимум кода, что бы было понятно что изменить в адаптере, а что добавить
практически типичный RecyclerView.Adapter
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
class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {
 
    private final CustomAdapterCallback listener;
 
    CustomAdapter(ArrayList<String> list, CustomAdapterCallback listener) {
        this.listener = listener; // слушатель куда мы будем отправлять позицию по которой кликнули
    }
 
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // создаем вью как обычно
        return new ViewHolder(view, listener); // пробрасываем слушателя дальше, в холдер
    }
 
    static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
 
        private final CustomAdapterCallback listener;
 
        ViewHolder(View view, CustomAdapterCallback listener) {
            super(view);
            this.listener = listener;
            this.itemView.setOnClickListener(this);
        }
 
        @Override
        public void onClick(View view) {
            listener.onItemClick(getAdapterPosition());
        }
    }
 
    interface CustomAdapterCallback {
        void onItemClick(int pos);
    }
}
фрагмент
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class BlankFragment extends Fragment implements CustomAdapter.CustomAdapterCallback {
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle b) {
        // лишний код вырезан
        recyclerView.setAdapter(new CustomAdapter(list, this)); // в адаптер передаем список или что там и ссылку на слушатель - это и есть наш фрагмент
        return view;
    }
 
    @Override
    public void onItemClick(int pos) {
        // тут берем из списка строку или позицию по которой нажали и передаем в диалог
    }
}
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2017, 15:58

Вызов диалогового окна выбора цвета (Excel)
Как вызвать диалоговое окно выбора цвета и как получить из него значение для...

Вызов диалогового окна без отправки формы
есть кнопка &lt;button onclick='opendialog()' class=&quot;change&quot;&gt;Показ окна&lt;/button&gt;...

Как присвоить переменную одного диалогового окна к переменной другого диалогового окна? (ООП)
Вот у меня есть результат вычисления и я его присваиваю переменной в первом...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru