Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Nikolarsen
3 / 3 / 1
Регистрация: 17.12.2016
Сообщений: 210
1

Добавление и редактирование ListView через AlertDialog

19.02.2018, 19:53. Просмотров 795. Ответов 2
Метки нет (Все метки)

Создаю элементы listview через alertdialog.
Хочу по нажатию на элемент, редактировать его так же в alertdialog и ставить обратно.
Проблема в том что не понял как отредактированный элемент listview отправить обратно в список...
Вот alert в котором редактирую...

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
listViewPn.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View itemClicked, int position,
                                        long id) {
            
//Получаем вид с файла prompt.xml, который применим для диалогового окна:
                    LayoutInflater li = LayoutInflater.from(context);
                    View promptsView = li.inflate(R.layout.prompt, null);
                    //Создаем AlertDialog
                    AlertDialog.Builder mDialogBuilder = new AlertDialog.Builder(context);
                    //Настраиваем prompt.xml для нашего AlertDialog:
                    mDialogBuilder.setView(promptsView);
                    //Настраиваем отображение поля для ввода текста в открытом диалоге:
                    userInput = (EditText) promptsView.findViewById(R.id.input_text);
                    TextView textView = (TextView) itemClicked;
                    String strText = textView.getText().toString(); // получаем текст нажатого элемента
                    userInput.setText(strText);
                    
                    //Настраиваем сообщение в диалоговом окне:
                    mDialogBuilder
                        .setCancelable(false)
                        .setPositiveButton("OK",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
 
                                //Вводим текст и сохраняем в  на основном экране:
 
                                spinadPn.add(userInput.getText().toString());       
 
                                String listStr = TextUtils.join(",", spinadPn);
                                SharedPreferences.Editor editor = getSharedPreferences("PREFS_NAME", MODE_PRIVATE).edit();
                                editor.putString("MY_LIST", listStr).apply();       
                                InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
                                imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
                            }
                        })
                        .setNegativeButton("Отмена",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                dialog.cancel();
                            }
                        });
                    //Создаем AlertDialog:
                    AlertDialog alertDialog = mDialogBuilder.create();
                    //и отображаем его:
                    alertDialog.show();
                    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
                    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
 
                
 
 
                }
            });
spinadPn.add(userInput.getText().toString());
Сохраняет новый элемент.

Добавлено через 1 час 28 минут
Java
1
spinadPn.set(0, userInput.getText().toString());
Как я понял 0 возвращает в начало списка....
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2018, 19:53
Ответы с готовыми решениями:

ListView+onCreateContextMenu->AlertDialog
Задача такая: по долгому нажатию на item в ListView вылетает контекстное меню...

ListView+onCreateContextMenu->AlertDialog->dbSQLite
Прошу помощи, т.к. вроде все складно, но не работает, вероятно проблема в...

Ввод данных через AlertDialog
Здравствуйте уважаемые программисты, подскажите пожалуйста как сделать панель...

Редактирование listview
Имеется два активити. В первом активити listview, в нем же хранится массив и...

Добавление пункта в ListView
Всем привет,подскажите пожалуйста, есть два активити с Listview в одном...

2
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,583
Завершенные тесты: 1
19.02.2018, 19:57 2
Лучший ответ Сообщение было отмечено Nikolarsen как решение

Решение

в onItemClick() прилетает position
что мешает после нажатия ОК просто записывать текст?
Java
1
spinadPn.set(position, userInput.getText().toString());
1
Nikolarsen
3 / 3 / 1
Регистрация: 17.12.2016
Сообщений: 210
20.02.2018, 09:41  [ТС] 3
Pablito, да спасибо... Просто добавить надо было " final " к int position

Добавлено через 12 часов 27 минут
Pablito, хочу по нажатию кнопки в alertdialog добавить строку с выбранным временем в edittext этого же alertdialog. Почему не выходит ? Что для этого нужно?
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
// диалог выбора времени запускаю нажатием кнопки в alertdialog showDateTimePicker();
 
    public void showDateTimePicker() {
        final Calendar currentDate = Calendar.getInstance();
        date = Calendar.getInstance();
        new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    date.set(year, monthOfYear, dayOfMonth);
                    new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
                            @Override
                            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                                date.set(Calendar.HOUR_OF_DAY, hourOfDay);
                                date.set(Calendar.MINUTE, minute);
                                
                                
                                String str = ((EditText) findViewById(R.id.input_text)).getText().toString();
                                datetime = new SimpleDateFormat("EEE, d MMM HH:mm").format(date.getTime());
                                userInput.setText( "вњ“ [ " + datetime + " ] ... " + str);
 
 
                            }
                        }, currentDate.get(Calendar.HOUR_OF_DAY), currentDate.get(Calendar.MINUTE), true).show();
                }
            }, currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DATE)).show();
    }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2018, 09:41

Добавление данных в ListView
Здравствуйте, не могу найти решение проблемы, добавляю записи в listview, а они...

Добавление элементов в listview из БД
Здравствуйте. У меня не выходит выбросить из списка одинаковые элементы. Я из...

Анимация в Listview (добавление/удаление)
Собственно, решаю задачу, нужно в имеющийся список ListView добавить анимацию,...


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

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

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