Невозможно заполнить список рассылки с несколькими вариантами выбора

У меня есть класс, который создает Arraylist. К этому классу я добавляю / удаляю объекты. У меня нет проблем с заполнением счетчика, но когда я прихожу, используя просмотр списка, он всегда пуст.

Как я заполняю счетчик:

final ArrayAdapter<Object> adapterEleves;
adapterEleves = new ArrayAdapter<Object>(this, android.R.layout.simple_list_item_1, ArraylisteEtudiants.getListe());

Spinner spinnerEtudiants = (Spinner) findViewById(R.id.spinnerEtudiants);
spinnerEtudiants.setAdapter(adapterEleves);
adapterEleves.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

Как я пытаюсь заполнить просмотр списка несколькими вариантами:

    final ArrayAdapter<Object> adapterEleves;
    adapterEleves = new ArrayAdapter<Object>(this, android.R.layout.simple_list_item_multiple_choice, ArraylisteEtudiants.getListe());

    ListView listEtudiants = (ListView) findViewById(R.id.afficherListeEtudiants);
    listEtudiants.setAdapter(adapterEleves);
    adapterEleves.setDropDownViewResource(android.R.layout.simple_list_item_multiple_choice);

Мой xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >

    <ListView
      android:id="@+id/afficherListeEtudiants"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:choiceMode="multipleChoice" >
    </ListView>

</LinearLayout>

Мой класс arraylist:

public class ArraylisteEtudiants {

    final static ArrayList<Object> listeEtudiants = new ArrayList<Object>();

    public static ArrayList<Object> getListe() {

        return listeEtudiants;
    }
}

Заранее спасибо!:)

1 ответ

Решение

Согласно справке Android:

ArrayAdapter

По умолчанию этот класс ожидает, что предоставленный идентификатор ресурса ссылается на один TextView. Если вы хотите использовать более сложный макет, используйте конструкторы, которые также принимают идентификатор поля. Этот идентификатор поля должен ссылаться на TextView в более крупном ресурсе макета.

Однако на TextView ссылаются, он будет заполнен toString() каждого объекта в массиве. Вы можете добавить списки или массивы пользовательских объектов. Переопределите метод toString() ваших объектов, чтобы определить, какой текст будет отображаться для элемента в списке.

Я уверен, что ваш ArrayAdapter не обеспечивает toString() метод, и именно поэтому он покажет вам пустой список.

Вы можете просто переопределить этот метод в возвращаемом объекте (попробуйте использовать более конкретный тип, чем Object).

Если это не может решить вашу проблему, вы должны попробовать настроить ArrayAdapter, расширяющий ArrayAdapter, персонализировать getView() метод.

Другие вопросы по тегам