Ваша проблема - типичная ошибка 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<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()
;
Если у вас есть какие-либо сомнения, не стесняйтесь комментировать.