ListView с проблемой массива

1

То, что я делаю, это желание начать с 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;
}

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

Спасибо заранее!

Теги:
listview

2 ответа

0
Лучший ответ

Не используйте массивы, используйте некоторую реализацию 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();
0

Как я могу расширить массив...

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню