Обновление андроидных массивов ArrayAdapter

У меня есть ArrayAdapter с этой структурой элементов:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout ... > <TextView android:id="@+id/itemTextView" ... /> </RelativeLayout> 

И добавьте этот адаптер так:

 mAdapter = new ArrayAdapter<String>(this, R.layout.item, R.id.itemTextView, itemsText); 

Все в порядке, но я хочу обновить текст в элементах адаптера. Я нашел решение

 mAdapter.notifyDataSetChanged(); 

Но не понимаю, как его использовать. Помоги пожалуйста.

Upd Мой код:

 String[] itemsText = {"123", "345", "567"}; ArrayAdapter<String> mAdapter; 

OnCreate

 mAdapter = new ArrayAdapter<String>(this, R.layout.roomitem, R.id.itemTextView, itemsText); setListAdapter(mAdapter); itemsText = {"789", "910", "1011"}; 

по щелчку

 mAdapter.notifyDataSetChanged(); //it's dont work 

Solutions Collecting From Web of "Обновление андроидных массивов ArrayAdapter"

Я думаю, что-то вроде этого

 public void updatedData(List itemsArrayList) { mAdapter.clear(); if (itemsArrayList != null){ for (Object object : itemsArrayList) { mAdapter.insert(object, mAdapter.getCount()); } } mAdapter.notifyDataSetChanged(); } 

Ваша проблема – типичная ошибка Java с указателями.

На первом этапе вы создаете массив и передаете этот массив в адаптер.

На втором этапе вы создаете новый массив (так создается новый указатель) с новой информацией, но адаптер все еще указывает на исходный массив.

 // init itemsText var and pass to the adapter String[] itemsText = {"123", "345", "567"}; mAdapter = new ArrayAdapter<String>(..., itemsText); //ERROR HERE: itemsText variable will point to a new array instance itemsText = {"789", "910", "1011"}; 

Итак, вы можете сделать две вещи: одну, обновить содержимое массива, а не создавать новую:

 //This will work for your example items[0]="123"; items[1]="345"; items[2]="567"; 

… или что бы я сделал, используйте List, что-то вроде:

 List<String> items= new ArrayList<String>(3); boundedDevices.add("123"); boundedDevices.add("456"); boundedDevices.add("789"); 

И в обновлении:

 boundedDevices.set("789"); boundedDevices.set("910"); boundedDevices.set("1011"); 

Чтобы добавить дополнительную информацию, в реальном приложении, как правило, вы обновляете содержимое адаптера списка информацией от поставщика услуг или контента, поэтому обычно для обновления элементов вы будете делать что-то вроде:

 //clear the actual results items.clear() //add the results coming from a service items.addAll(serviceResults); 

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

И вне курса после обновления данных вызывается вызов notifyDataSetChanged() ;

Если у вас есть какие-либо сомнения, не стесняйтесь комментировать.

Предполагая itemTexts как массив String или String ArrayList, где вы добавляете новые элементы в itemsTextat, после этого вы можете позвонить

 mAdapter.notifyDataSetChanged(); 

Если вы не получили ответа, пожалуйста, введите код.