Android studio listview очистить

Android ListView очистить

У меня есть ListView. Я хочу динамически изменять содержимое ListView. Я использовал адаптер, чтобы передать ему значения. Когда я передаю значения, он принимает и отображает, но когда я нажимаю кнопку «Назад» и передаю новые данные, он по-прежнему отображает старые данные и новые данные.

arraylist.clear (), adapter_object.notifyDataSetChanged (); , listview.setAdapter (null);

Но ни один из них не работал.

Вот как я передаю значения в класс getter и setter

Вот код адаптера

Вот класс геттера-сеттера

РЕДАКТИРОВАТЬ-1 ДЕЯТЕЛЬНОСТЬ, чтобы установить значения

5 ответов

Я не понимаю, какая у вас логика для настройки адаптера. Но вы никогда не должны создавать адаптер внутри цикла, поэтому исправьте следующее.

Второе — это onbackPressed() . Поскольку я вижу, что вы не завершили текущее действие при нажатии кнопки «Назад», почему это так? Я думаю, что вы должны закончить свою деятельность, и в этом случае нет необходимости сбрасывать адаптер.
Или, если вы хотите сохранить его таким образом. Просто очистив список, вы перезагрузите адаптер.

Flight_one_way_detail является статическим, который не должен быть.

В качестве статической концепции, только один объект flight_one_way_detail является init для вашей активности, поэтому даже после возвращения из другой деятельности вы все равно получите этот объект и добавите в него новую деталь полета, чтобы она показывала как старый, так и новый

Кроме того @Raghavendra предлагает создать новый адаптер не должно быть в цикле.

Вы должны звонить new Flight_info_adapter() только один раз. Я предлагаю сначала создать ArrayList , а затем передать его конструктору Flight_info_adapter() :

Нет необходимости вызывать clear() сразу после создания списка. Новый список гарантированно будет пустым.

Обратите внимание, что значения в адаптере хранятся только в памяти. Если пользователь закроет ваше приложение, все данные будут потеряны. Для более постоянного хранения данных я предлагаю вам создать базу данных SQLite и использовать CursorAdapter. Есть несколько хороших онлайн-уроков и блогов, которые иллюстрируют, как это сделать.

Во-первых, ваш адаптер не должен быть статичным.

Во-вторых, сделайте приватный метод вашей деятельности. нравится-

А затем передайте массив для вашего адаптера из метода onCreate.

Я надеюсь, что с этими двумя шагами вы получите желаемый результат. если этого не произойдет, то очистите ваш arraylist от конструктора вашего адаптера. нравится-

Но это не очень хорошая практика. потому что, каждый раз, когда вы переходите на новый arraylist к вашему адаптеру. если и только если вы не получите желаемый результат, вы можете очистить список из конструктора.

Читайте также:  Приватный режим для android

Прежде всего, вы не должны запускать новые действия в функции onBackPressed (). Его основная функция — возврат к предыдущей активности. И после этой функции, функция onResume () предыдущего действия запускается и там, вы должны обновить свой список и адаптер.

Источник

Удалить элементы ListView в Android

Может кто-нибудь, пожалуйста, дать мне пример кода удаления всех элементов ListView и замены на новые элементы?

Я попытался заменить элементы адаптера без успеха. Мой код

Здесь метод repopulateList() будет добавлять элементы ListView, но не удаляет / не заменяет все элементы ListView.

Вы захотите remove() элемент из объекта адаптера, а затем просто запустите notifyDatasetChanged() на адаптере, любой ListView будет (должен) перерабатывать и обновлять самостоятельно.

Ниже приведен краткий пример активности с AlertDialog s:

Вы можете использовать

Который удалит все элементы вашего первого адаптера, тогда вы можете либо установить другой адаптер, либо повторно использовать адаптер, либо добавить элементы в старый адаптер. Если вы используете

Для добавления данных в ваш список вам не нужно вызывать notifyDataSetChanged

Я думаю, что если вы добавите следующий код, он будет работать

Чтобы удалить элемент, просто удалите этот элемент из arraylist, который мы передали адаптеру, и выполните listview.invalidateViews();
Это обновит список

Затем вызовите notifyDataSetChanged();

Удалите его из адаптера, а затем уведомите массив, который изменил набор данных.

Этот код отлично работает для меня.

  • Вы должны использовать только один адаптер, связанный со списком данных, который вам нужно перечислить
  • Когда вам нужно удалить и заменить все элементы, вам необходимо очистить все элементы из списка данных, используя «list.clear ()», а затем добавить новые данные, используя «list.addAll (List)»

Попробуйте этот код, он работает для меня.

Сначала вы должны удалить элемент из своего списка. Позже вы можете удалить свой адаптер и пополнить его новым списком.

Это просто. Сначала вы должны очистить свою коллекцию и после четкого списка, как этот код:

Источник

Очистить содержимое listview?

У меня небольшая проблема с listview. Как очистить содержимое listview, зная, что у него есть пользовательский адаптер?

изменить : пользовательский класс адаптера расширяет BaseAdapter, он выглядит следующим образом:

10 ответов

просто писать

Я думаю, вы передали список или массив адаптеру. Если вы сохраните экземпляр этой добавленной коллекции, вы можете сделать

это будет работать, только если вы создали экземпляр адаптера с помощью коллекция и это тот же самый экземпляр.

кроме того, в зависимости от адаптера, который вы расширили, вы не сможете этого сделать. SimpleAdapter используется для статических данных, поэтому он не может быть обновлено после создания.

PS. не все адаптеры имеют а очистить() метод. ArrayAdapter, но или SimpleAdapter не

Читайте также:  Эскизы галереи андроид что это

Это просто .Сначала вы должны очистить свою коллекцию и после очистить список, как этот код:

начиная с версии Android M и N, следующие работы для меня и будет правильным подходом. Опорожнение ListView или установка адаптера в null не является правильным подходом и приведет к проблеме нулевого указателя, недопустимому ListView и/или сбою приложения.

т. е. сначала вы полностью очистите список, а затем сообщите адаптеру об этом изменении. Android позаботится о правильном обновлении пользовательского интерфейса с пустым списком. В моем случае, мой список является ArrayList.

Если вы выполняете эту операцию из другого потока, запустите этот код в потоке пользовательского интерфейса:

Источник

Как удалить listview все элементы

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

Как я могу удалить элементы listview динамически.

11 ответов

вызов setListAdapter() снова. На этот раз с пустым ArrayList.

ListView работает на основе базовых данных в Adapter . Для того, чтобы очистить ListView вам нужно сделать две вещи:

  1. Очистить данные, которые вы установили с адаптером.
  2. обновите представление, вызвав notifyDataSetChanged

например, см. скелет SampleAdapter ниже, что расширяет BaseAdapter

вот вам ArrayList data как данные для вашего адаптера. Хотя вам может не понадобиться использовать ArrayList, вы будет иметь что-то подобное в вашем коде для представления данных в вашем ListView

Далее вы предоставляете метод для очистки этих данных, реализация этого метода заключается в очистке базовой структуры данных

если вы используете какой-либо подкласс коллекция, они очистить() метод, который вы можете использовать, как указано выше.

как только у вас есть этот метод, вы хотите позвонить clearData и notifyDataSetChanged на onClick таким образом код onClick будет выглядеть примерно так:

Если вы использовали объект списка и передали адаптеру, вы можете удалить значение из объекта списка и вызвать notifyDataSetChanged() с помощью объекта адаптера.

Источник

Android Listview Swipe To Delete Example Tutorial Step By Step

Android Listview Swipe To Delete Tutorial With Example is covered in this post.

You will learn how to make a listview swipe to show delete button.

We will make a listview in which listview row item will be deleted when the user swipes left or right.

At the end of this example, you will learn to make a listview feature of swipe to delete like in gmail app.

This swipe to remove listview item feature simplifies the deleting process for the user.

First checkout the output video, then we will develop the example step by step.

Step 1. Make a new project.

Create a new project in android studio with empty activity.

Step 2. Adding dimens file

Create a new xml file named dimens.xml under res -> values folder

Add following code in it

Step 3. Updating colors.xml

Update colors.xml file with below

Читайте также:  Как удалить kinguser с андроида полностью

Step 4. Create listview row layout

Make a new layout resource file and give it a name list_item.xml

Add below source code in it

This layout file represents the every single row item of the listview.

In this file, both the layouts are covered :

  • A layout which is shown before the swipe action
  • A layout which is shown after user swipes the row (undo and delete button)

Step 5. Add Library to build.gradle(Module: app)

Add below line into build.gradle(Module: app) file

We have used external library in this example.

The classes of this library will simplify our work and will save our time.

Visit library on github here.

Step 6. Adding Images

Now put these images in the drawable folder.

You can learn how to add items to the drawable folder here in step 2. (No need to create xml file in drawable, just copy and paste images in drawable).

Step 7. Making Model

Create a new java class named Model.java and add below code

Step 8. Preparing Custom Adapter

Make a new java class with name CustomAdapter.java

Add following into it

This adapter class contains remove() method. This method will get position as a parameter. It is the same position (a number of row item) which is swiped by the user.

remove() method will delete the row which it has got as a parameter.

Step 9. Updating Main Activity

Update activity_main.xml as below

Update MainActivity.java file as below

Understanding the main logic

Look closely at following snippet from Main Activity

Above code is the heart of this example. When the user swipes left or right, the compiler will execute the above code lines.

Row item of listview is removed when the user swipes left or right. onDismiss() method will be executed when user swipes.

onDismiss() method will call the remove() method from the adapter class.

A position of the listview row item, which is swiped by the user will be sent as a parameter in the remove() method.

You can add your code as per your requirements in this method.

Undo Execution

When user swipes the row, undo option is shown to him. If user changes his mind after swiping the row, he can undo his task by clicking the undo button.

Read below code

When the user clicks on undo text, above code will be executed.

Download Source Code For Android Listview Swipe To Delete

Click on below link to get android studio source code.

[sociallocker] Download Listview Swipe to delete [/sociallocker]

So that is all for android listview swipe to delete tutorial with example.

You can ask your queries in comment without any hesitation.

Источник

Оцените статью