Как удалить динамически созданный edittext java
Перейти к содержимому

Как удалить динамически созданный edittext java

  • автор:

Как удалить динамически созданный edittext java

Элемент EditText является подклассом класса TextView . Он также представляет текстовое поле, но теперь уже с возможностью ввода и редактирования текста. Таким образом, в EditText мы можем использовать все те же возможности, что и в TextView.

Из тех атрибутов, что не рассматривались в теме про TextView, следует отметить атрибут android:hint . Он позволяет задать текст, который будет отображаться в качестве подсказки, если элемент EditText пуст. Кроме того, мы можем использовать атрибут android:inputType , который позволяет задать клавиатуру для ввода. В частности, среди его значений можно выделить следующие:

  • text : обычная клавиатура для ввода однострочного текста
  • textMultiLine : многострочное текстовое поле
  • textEmailAddress : обычная клавиатура, на которой присутствует символ @ , ориентирована на ввод email
  • textUri : обычная клавиатура, на которой присутствует символ / , ориентирована на ввод интернет-адресов
  • textPassword : клавиатура для ввода пароля
  • textCapWords : при вводе первый введенный символ слова представляет заглавную букву, остальные — строчные
  • number : числовая клавиатура
  • phone : клавиатура в стиле обычного телефона
  • date : клавиатура для ввода даты
  • time : клавиатура для ввода времени
  • datetime : клавиатура для ввода даты и времени

Первое поле здесь обычное однострочное, а второе — многострочное. Чтобы во втором поле текст выравнивался по верху, дополнительно устанавливается атрибут android:gravity=»top» .

EditText в Java и Android

Одной из возможностей элемента EditText также является возможность обработать введенные символы по мере ввода пользователя. Для этого определим в файле activity_main.xml следующую разметку:

Предполагается, что введенные в EditText символы тут же будут отображаться в элементе TextView. И для этого также изменим код MainActivity:

package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EditText editText = findViewById(R.id.editText); editText.addTextChangedListener(new TextWatcher() < public void afterTextChanged(Editable s) <>public void beforeTextChanged(CharSequence s, int start, int count, int after) < >public void onTextChanged(CharSequence s, int start, int before, int count) < TextView textView = findViewById(R.id.textView); textView.setText(s); >>); > >

С помощью метода addTextChangedListener() здесь к элементу EditText добавляется слушатель ввода текста — объект TextWatcher . Для его использования нам надо реализовать три метода, но в реальности нам хватит реализации метода onTextChanged , который вызывается при изменении текста. Введенный текст передается в этот метод в качестве параметра CharSequence. В самом методе просто передаем этот текст в элемент TextView.

В итоге при вводе в EditText все символы также будут отображаться в TextView:

Как удалить динамически созданный edittext java

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

Для управления данными мы можем использовать методы адаптера или напрямую источника данных. Например, класс ArrayAdapter предоставляет следующие методы для управления данными:

  • void add(T object) : добавляет элемент object в конец массива
  • void addAll(T. items) : добавляет все элементы items в конец массива
  • void addAll(Collection collection) : добавляет коллекцию элементов collection в конец массива
  • void clear() : удаляет все элементы из списка
  • void insert(T object, int index) : добавляет элемент object в массив по индексу index
  • void remove(T object) : удаляет элемент object из массива

Однако после применения вышеуказанных методов изменения коснутся только массива, выступающего источником данных. Чтобы синхронизировать изменения с элементом ListView , надо вызвать у адаптера метод notifyDataSetChanged() .

Например, определим в файле activity_main.xml следующие элементы:

Для вывода списка предназначен ListView с возможностью множественного выбора элементов. Для добавления и удаления определены две кнопки. Для ввода нового объекта в список предназначено поле EditText.

Теперь изменим класс MainActivity :

package com.example.listapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; import java.util.ArrayList; import java.util.Collections; public class MainActivity extends AppCompatActivity < ArrayListusers = new ArrayList(); ArrayList selectedUsers = new ArrayList(); ArrayAdapter adapter; ListView usersList; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // добавляем начальные элементы Collections.addAll(users, "Tom", "Bob", "Sam", "Alice"); // получаем элемент ListView usersList = findViewById(R.id.usersList); // создаем адаптер adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, users); // устанавливаем для списка адаптер usersList.setAdapter(adapter); // обработка установки и снятия отметки в списке usersList.setOnItemClickListener(new AdapterView.OnItemClickListener()< @Override public void onItemClick(AdapterViewparent, View v, int position, long id) < // получаем нажатый элемент String user = adapter.getItem(position); if(usersList.isItemChecked(position)) selectedUsers.add(user); else selectedUsers.remove(user); >>); > public void add(View view) < EditText userName = findViewById(R.id.userName); String user = userName.getText().toString(); if(!user.isEmpty())< adapter.add(user); userName.setText(""); adapter.notifyDataSetChanged(); >> public void remove(View view) < // получаем и удаляем выделенные элементы for(int i=0; i< selectedUsers.size();i++)< adapter.remove(selectedUsers.get(i)); >// снимаем все ранее установленные отметки usersList.clearChoices(); // очищаем массив выбраных объектов selectedUsers.clear(); adapter.notifyDataSetChanged(); > >

С добавлением все относительно просто: получаем введенную строку и добавляем в список с помощью метода adapter.add() . Чтобы обновить ListView после добавления вызывается метод adapter.notifyDataSetChanged() .

А для удаления создается дополнительный список selectedUsers, который будет содержать выделенные элементы. Для получения выделенных элементов и добавления их в список используется слушатель AdapterView.OnItemClickListener , метод onItemClick() которого вызывается при установке или снятия отметки с элемента, то есть при любом нажатии на элемент.

По нажатию на кнопку удаления пробегаемся по списку выделенных элементов и вызываем для каждого из них метод adapter.remove() .

Очистить все EditText

Author24 — интернет-сервис помощи студентам

в примере сказано R.id.sign_up заменить идентификатором корневого макета вашего XML-файла,
сомневаюсь правильно ли я это понял, возможно в этом ошибка
вместо R.id.sign_up указываю id основного LinearLayout activity_main

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Введённые данные в EditText отнимались от старых и результат выводился в Textview, в Edittext просто сменна данных
Здравствуйте, я начинающий, возникла проблема в разработке, мне нужно что бы новые данные (числа).

Как очистить содержимое EditText?
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Как очистить содержимое.

Ввод в один EditText и авто-вычисление в двух других EditText
Всем привет. Есть три поля EditText,виртуальные клавиатуры у всех заблокированы,а ввод чисел в.

EditText смещается вниз при вводе текста, который занимает объём больше, чем EditText
EditText сещается вниз при вводе текста который занимает обём больше чем EditText. Как устранить?

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

17052 / 9999 / 2763
Регистрация: 21.10.2017
Сообщений: 21,960

cintakc, а на этом LinearLayout случаем не лежат другие контейнеры с EditText’ами? Типа фрагментов, других лэйаутов?

Регистрация: 23.10.2015
Сообщений: 54
да, EditText находятся и в других Layout-ах внутри основного также
Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

17052 / 9999 / 2763
Регистрация: 21.10.2017
Сообщений: 21,960

Вот в них и нужно перебирать вьюхи в поиске EditTextов. Попробуй все найденные вьюхи выводить в логкэт, сразу будет видно, что нашел

Регистрация: 23.10.2015
Сообщений: 54
спасибо, попробую, но в коде это учитывается

if(view instanceof ViewGroup && (((ViewGroup)view).getChildCount() > 0)) clearForm((ViewGroup)view);

не очищаются даже те Edit , которые в основной Layout находятся

p.s.
оставил только кнопку и 2 эдита, все равно не стирает

Добавлено через 18 минут
спасибо, за советы, заработало, студию перезагрузил и стало стирать, не знаю, что было

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Какой метод в EditText для автоматического события при вводе первого символа текста в EditText ?
Здравствуйте Какой метод в EditText для автоматического события при вводе первого символа текста в.

Динамическое создание edittext и обработка данных из edittext
Здравствуйте, мне нужна помощь, у меня есть таблица, где динамически создаются edittext: for (int .

При закрытии Form всё сохраняется, как очистить всё?
Здравствуйте, такой вопросик, при закрытии формы, хоть me.close(), хоть me.hide(), всё почему то.

Как всё сместить вверх, чтобы EditText оказался вверху клавиатуры
Работаю на Android Studio. Как всё сместить вверх, чтобы EditText оказался вверху клавиатуры и.

Очистить все ComboBox
Добрый вечер! Не могли бы вы помочь с одни вопросом. У меня в форме есть 4 combobox, сейчас каждый.

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

Или воспользуйтесь поиском по форуму:

Динамическое создание EditText

Но это все детали. Зачем вам вообще создавать вручную EditText? не проще ли воспользоваться предназначенным для этого компонентом типа GridView?

Отслеживать
ответ дан 9 июл 2015 в 9:06
4,325 13 13 серебряных знаков 22 22 бронзовых знака

  • java
  • android
  • android-studio
    Важное на Мете
Связанные
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.26.3951

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *