Как объединить даты в клубы и показать их данные в java или kotlin - PullRequest
3 голосов
/ 22 января 2020

Я получаю этот json в android, и я хочу показать данные за дату (вкладки с ViewPager)

например- 23 (Tab1) : 1) id -9854359 2) id-9854360 || 24 (Tab2) id-9854361 2) id-9854360

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

[
    {
    "end_time": "2020-01-23 01:45:00+00:00",
    "is_booked": false,
    "is_expired": false,
    "slot_id": 9854359,
    "start_time": "2020-01-23 01:30:00+00:00",
    "username": null
    },
    {
    "end_time": "2020-01-23 02:05:00+00:00",
    "is_booked": false,
    "is_expired": false,
    "slot_id": 9854360,
    "start_time": "2020-01-23 01:50:00+00:00",
    "username": null
    },
    {
    "end_time": "2020-01-24 02:45:00+00:00",
    "is_booked": false,
    "is_expired": false,
    "slot_id": 9854359,
    "start_time": "2020-01-24 02:30:00+00:00",
    "username": null
    },
    {
    "end_time": "2020-01-24 03:05:00+00:00",
    "is_booked": false,
    "is_expired": false,
    "slot_id": 9854359,
    "start_time": "2020-01-24 02:50:00+00:00",
    "username": null
    }
    ]

1 Ответ

2 голосов
/ 22 января 2020

Скрытие JSON в классах. Насколько я знаю, в Android это стандартная практика использования GSON.

class Entity {
    String end_time
    boolean is_booked
    boolean is_expired
    long slot_id;
    String start_time;
    String username;
}

List<Entity> entities = gson.fromJson(yourJsonAsString), Entity.class);

Извлечение даты и группы по дате. Я предлагаю использовать java Stream API, поскольку он сделан только для таких задач, как:

Map<String, List<Entity>> grouppedByDate = 
    entities.stream().collect(
        Collectors.grouppingBy(entity -> entity.end_time.split(" ")[0])
    )

Создание представления вкладок с каждой вкладкой, содержащей представление списка.

Для адаптера вкладки используйте коллекцию grouppedByDate.entries(), где entry.getKey() - это дата сущностей на этой вкладке, а entry.getValue() - список записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...