Android: массив из нескольких столбцов в Listview

#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?. Может быть, мы могли бы перейти в чат, чтобы углубиться в детали.