Android: привязать данные к ListView без подготовки ArrayLists для ListAdapter?

Прямо сейчас я получаю свои модели в красивой объектно-ориентированной форме. Чтобы привязать их к моему списку, я должен использовать listAdapter. Могу ли я заполнить этот listAdapter только глупыми ArrayLists? Потому что это означает, что мне нужно перебрать мою коллекцию моделей и снова извлечь все данные из моих моделей.

Итак, я отделяю свои данные от моделей и не могу легко обновить данные в своем listView, если что-то случится в modelCollection (например, станет больше за счет новых элементов/разбивки на страницы).

Существует ли более разумный способ, чем я сейчас использую? Могу ли я более тесно привязать свою ModelCollection к listView?

    ModelCollection modelCollection = ModelCategory.findAll();

    /*
     * Prepare Data for Adapter
     */
    ArrayList<String> itemTitles = new ArrayList<String>();

    // Iterate over my ModelCollection and pull all the Data from each Model
    for (int i = 0; i < modelCollection.items.size(); i++) {

      if (modelCollection.items.get(i) != null) {

        // TODO: Cant I bind my Models directly to the List without creating this ArrayList? 
        itemTitles.add(((ModelCategory) modelCollection.items.get(i)).getTitle());       

      }
    }

    /*
     * Create Adapter and bind Array
     */
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, itemTitles  );
    setListAdapter(adapter);

Еще один вопрос: как мне расширить свой код, если я хочу добавить в список небольшие субтитры под заголовком?


person OneWorld    schedule 14.09.2010    source источник


Ответы (1)


Существует ли более разумный способ, чем я сейчас использую?

Напишите свою собственную реализацию ListAdapter, возможно, расширив BaseAdapter, которая будет работать с вашей существующей коллекцией.

Еще один вопрос: как мне расширить свой код, если я хочу добавить в список небольшие субтитры под заголовком?

Ваш getView() в вашей пользовательской реализации ListAdapter может форматировать ваши строки по вашему желанию, в том числе с использованием нескольких фрагментов данных.

person CommonsWare    schedule 14.09.2010
comment
Я рекомендую этот учебник: softwarepassion.com/ - person OneWorld; 05.10.2010