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

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

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

populateList(){ results //populated arraylist with strings ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, results); listview.setAdapter(adapter); adapter.notifyDataSetChanged(); listview.setOnItemClickListener(this); } // now populating list again repopulateList(){ results1 //populated arraylist with strings ArrayAdapter adapter1 = new ArrayAdapter(this, android.R.layout.simple_list_item_1, results1); listview.setAdapter(adapter1); adapter1.notifyDataSetChanged(); listview.setOnItemClickListener(this); } 

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

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

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

 adapter = new MyListAdapter(this); lv = (ListView) findViewById(android.R.id.list); lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView a, View v, int position, long id) { AlertDialog.Builder adb=new AlertDialog.Builder(MyActivity.this); adb.setTitle("Delete?"); adb.setMessage("Are you sure you want to delete " + position); final int positionToRemove = position; adb.setNegativeButton("Cancel", null); adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { MyDataObject.remove(positionToRemove); adapter.notifyDataSetChanged(); }}); adb.show(); } }); 

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

 listview.invalidateViews(); 

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

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

 adapter.clear() 

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

 adapter.add() 

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

 int count = adapter.getCount(); for (int i = 0; i < count; i++) { adapter.remove(adapter.getItem(i)); } 

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

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

 m_adapter.remove(o); m_adapter.notifyDataSetChanged(); 
  names = db.getSites(); la = new ArrayAdapter(EditSiteList.this, android.R.layout.simple_list_item_1, names); EditSiteList.this.setListAdapter(la); listview.invalidateViews(); 

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

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

вот пример:

 List myList = new ArrayList(); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, myList); listview.setAdapter(adapter); listview.setOnItemClickListener(this); populateList(){ List result = getDataMethods(); myList.addAll(result); adapter.notifyDataSetChanged(); } repopulateList(){ List result = getDataMethods(); myList.clear(); myList.addAll(result); adapter.notifyDataSetChanged(); } 

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

 public class Third extends ListActivity { private ArrayAdapter adapter; private List liste; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_third); String[] values = new String[] { "Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2" }; liste = new ArrayList(); Collections.addAll(liste, values); adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, liste); setListAdapter(adapter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { liste.remove(position); adapter.notifyDataSetChanged(); } } 

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

 private void add(final List trackList) { MyAdapter bindingData = new MyAdapter(MyActivity.this, trackList); list = (ListView) findViewById(R.id.my_list); // TODO list.setAdapter(bindingData); // Click event for single list row list.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View view, final int position, long id) { // ShowPlacePref(places, position); AlertDialog.Builder showPlace = new AlertDialog.Builder( Favoriler.this); showPlace.setMessage("Remove from list?"); showPlace.setPositiveButton("DELETE", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { trackList.remove(position); //FIRST OF ALL REMOVE ITEM FROM LIST list.setAdapter(null); // THEN EMPTY YOUR ADAPTER add(trackList); // AT LAST REFILL YOUR LISTVIEW (Recursively) } }); showPlace.setNegativeButton("CANCEL", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); showPlace.show(); } }); } 

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

  yourCollection.clear(); setListAdapter(null); 

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

  lv.setAdapter(null); 
  • удалить несколько элементов в пользовательском listview
  • Getview Вызывается несколько раз в android
  • Ошибка Listview: «В вашем контенте должен быть ListView с атрибутом id« android.R.id.list »
  • как установить режим выбора для списка с изображениями
  • Элемент списка избранных элементов Android ListView выделен
  • Множественный выбор в пользовательском ListView с CAB
  • Как я могу обновить одну строку в ListView?
  • Как запустить onListItemClick в Listactivity с помощью кнопок в списке?
  • Android - ListView для загрузки большего количества предметов по достижении конца
  • Есть ли разница между «ListView.invalidateViews ()» и «Adapter.notifyDataSetChanged ()»?
  • android - listview получить просмотр позиции по позиции
  • Давайте будем гением компьютера.