Добавление Spinner в заголовок Listview и динамическое заполнение значений - PullRequest
0 голосов
/ 01 марта 2012

У меня есть вопрос о добавлении счетчика в заголовок списка:

  1. Как получить бланк для отображения в заголовке списка.
  2. Как динамически заполнять значения в этом счетчике на основе значений в просмотре списка.

Описание: У меня есть просмотр списка, который заполняет значения из файла XML (размещенного в сети). Этот список может быть огромным в зависимости от выбора пользователя на предыдущих экранах и / или данных в файле XML.

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

Например: Если мое приложение показывает список книг, доступных в библиотеке. Блесна должна помочь пользователю: 1. Сортировка в алфавитном порядке по названию книги 2. Сортировка в алфавитном порядке по имени автора 3. Отфильтруйте только книги, связанные с «Войной» 4. Отфильтруйте только книги, относящиеся к «Истории». 5. Отфильтруйте только книги, связанные с «Наукой»

Когда я заполняю список, XML предоставляет такие детали, как «Тип книги», «Автор», «Заголовок» и т. Д.

Вопрос в том, как поместить счетчик сверху и заполнить значения, такие как типы (Война, История, Преступление и т. Д.), На счетчик, основываясь на списке книг в просмотре списка.

Я старался быть как можно более описательным. Если потребуется дополнительная информация, пожалуйста, дайте мне знать.

Любая помощь будет высоко оценена.

Спасибо, Букет!

1 Ответ

0 голосов
/ 01 марта 2012

Для размещения счетчика над ListView, проверьте этот метод: http://developer.android.com/reference/android/widget/ListView.html#addHeaderView%28android.view.View%29

Или вы можете поместить пользовательский макет заголовка для ListView в родительский макет для Activity. Дополнительная справка ListView: http://www.vogella.de/articles/AndroidListView/article.html#listview_overview

Что касается заполнения счетчика, то можно настроить счетчик на любое желаемое значение. В примере онлайн (http://developer.android.com/resources/tutorials/views/hello-spinner.html):

String[] myValues = // Put code here for the values and size of array you want. 
Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
        this, YOUR_STRING_ARRAY_VARIABLE_HERE, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

Ваша задача как программиста - выяснить, как определить, какой элемент выбран в счетчике, и внести изменения в listView. Чтобы обновить значения в представлении списка, проверьте это: Обновите представление списка динамически с помощью адаптера

Одно из решений, и как бы я это сделал, - создать пользовательский класс Java для Entry, чтобы вы могли взять в XML-файле и дать каждой записи экземпляр переменных или характеристик для сортировки. Затем, используя эту модель данных, создайте класс EntryList или EntryArray, который может обрабатывать сортировку ваших объектов данных Entry. Затем есть метод toStringArray (), который будет возвращать массив строк. Таким образом, вы держитесь за данные и разрешаете всю необходимую вам сортировку. При каждом нажатии на спиннер вызывается соответствующий метод в EntryList или EntryArray, в адаптер помещается новый массив String, и пользователь видит новый отсортированный список.

Вероятно, это было много, чтобы переварить, так что прочитайте все ссылки и посмотрите, сможете ли вы это реализовать. Ура!

...