#java #android #listview #arraylist
#java #Android #просмотр списка #список массивов
Вопрос:
Я пытаюсь найти наилучший метод отображения результата json в listview. У меня есть следующий ответ json, поступающий от службы WCF RESTful:
[
{
"Class": "Lorem",
"Company": "Ipsum",
"Id": "XXXX",
"Name": "Avent"
},
{
"Class": "Consectetur",
"Company": "Adipiscing",
"Id": "YYYYY",
"Name": "Nulla"
}
]
Я прочитал несколько примеров arraylist для listview, но ни один из них не связан с проблемой с несколькими столбцами, которую я пытаюсь обойти. Я хочу, чтобы в столбце отображалось поле «Имя» крупным шрифтом, а название «Компания» под ним — более мелким текстом. Я бы хотел сохранить идентификатор как своего рода ключ, чтобы, когда пользователь нажимает на элемент, вызывать его в другой функции, но я не уверен, как лучше это сделать.
Групповой класс:
public class Group {
private String Id;
private String Name;
private String Class;
private String Company;
}
оператор синтаксического анализа gson:
ArrayList<Group> groups = gson.fromJson(jsonString, new TypeToken<ArrayList<Group>>() {}.getType())
Я использую ArrayAdapter, но у меня такое чувство, что мне может понадобиться создать для этого пользовательский адаптер. Должен ли я использовать HashMap, чтобы заставить это работать? Нужно ли мне как-то преобразовать мой arraylist?
Ответ №1:
ArrayList — это первый шаг в правильном направлении, затем используйте хэш-карту для каждой строки и, наконец, добавьте ее в свой SimpleAdapter.
Подробная информация
Каждая строка состоит из нескольких представлений, которые соответствуют нескольким точкам данных. Чтобы упорядочить все эти точки данных, мы помещаем их в хэш-карту, по 1 хэш-карте на строку. Чтобы представить несколько строк данных, у нас есть список массивов для хранения каждой строки данных, по 1 элементу (хэш-карты) на строку. Есть два шага, чтобы собрать все это вместе. Сначала передаем список массивов и данные для просмотра сопоставления в конструкторе SimpleAdapter. Во-вторых, настройте SimpleAdapter.ViewBinder по мере необходимости. Связующее может автоматически обрабатывать текст для TextViews и извлекаемые идентификаторы ресурсов для ImageViews.
Приведенный здесь пример кода слишком велик, но посмотрите его здесь .
Комментарии:
1. У меня такая же проблема, и мне хотелось бы получить более подробный ответ… Я прочитал страницу документов на SimpleAdapter, но мне все еще неясно, как она используется.
2. спасибо, Дэн, посмотрев на предоставленную вами ссылку и некоторые другие примеры, я теперь понимаю концепцию — к сожалению, механика фактического получения SharedPrefs Map -> HashMap -> ArrayAdapter(HashMaps) -> SimpleAdapter -> ViewBinder по-прежнему недоступна для меня… Я буду продолжать пытаться. Я думаю, мне действительно следовало пройти этот курс Java по расширенным объектам данных в прошлом семестре:-(
3. Я не уверен, где вы получили SharedPreferences?. Может быть, мы могли бы перейти в чат, чтобы углубиться в детали.