То, что я делаю, это желание начать с ListView с 0 строк, загрузить список из Интернета, а затем заполнить ListView загруженным содержимым. Кажется, достаточно просто, но массивы оказываются проблемой.
Что происходит, так это то, что я объявляю свой массив единственным способом, которым ListView, похоже, хочет его
static String[] CONTENTS = new String[]{};
чтобы он не заполнял строки. Загрузив содержимое через поток, я перейду к заполнению массива с тем, что я загрузил. Проблема в том, что он не хочет заполнять массив; если я инициирую массив с одной пустой строкой, он позволит мне заполнить его ровно одной строкой (поэтому, если я дам ему массив с несколькими объектами, он ничего не делает). Как я могу расширить массив, из которого ListView принимает данные, поэтому я могу заполнить его более чем числом объектов, которые я объявил с помощью?
Ближайшим, с которым я смог приехать, был через код
private String[] expand(String[] array, int size) {
String[] temp = new String[size];
System.arraycopy(array, 0, temp, 0, array.length);
for(int j = array.length; j < size; j++)
temp[j] = "";
return temp;
}
чтобы расширить массив и предоставить ему количество загруженных объектов, но это все еще не работает.
Спасибо заранее!
Не используйте массивы, используйте некоторую реализацию List. (ArrayList выполнит эту работу). Коллекции намного превосходят массивы старой школы.
//List
list = new ArrayList();
//BaseAdapter
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, list);
//ListView
listView = (ListView) findViewByID(R.id.listview);
listView.setAdapter(adapter);
И когда вы добавляете/удаляете элементы в/из list
, вы должны вызывать
adapter.notifyDataSetChanged();
Как я могу расширить массив...
Я предполагаю, что вы используете ArrayAdapter. Вместо использования массива с фиксированным размером используйте динамически изменяемый ArrayList, чтобы вернуть его с помощью одного из конструкторов ArrayAdapter, которые принимают List
.