Проанализируйте JSON в ListView дружественный вывод

Таким образом, у меня есть этот JSON, который затем мое действие получает к строке:

    {"popular":
        {"authors_last_month": [
         {
            "url":"http://activeden.net/user/OXYLUS",
            "item":"OXYLUS",
            "sales":"1148",
            "image":"http://s3.envato.com/files/15599.jpg"
         },
         {
            "url":"http://activeden.net/user/digitalscience",
            "item":"digitalscience",
            "sales":"681",
            "image":"http://s3.envato.com/files/232005.jpg"
         }
         {
            ...
         }
        ],
        "items_last_week": [
         {
            "cost":"4.00",
            "thumbnail":"http://s3.envato.com/files/227943.jpg",
            "url":"http://activeden.net/item/christmas-decoration-balls/75682",
            "sales":"43",
            "item":"Christmas Decoration Balls",
            "rating":"3",
            "id":"75682"
         },
         {
            "cost":"30.00",
            "thumbnail":"http://s3.envato.com/files/226221.jpg",
            "url":"http://activeden.net/item/xml-flip-book-as3/63869",
            "sales":"27",
            "item":"XML Flip Book / AS3",
            "rating":"5",
            "id":"63869"
         },
         {
            ...
         }],
        "items_last_three_months": [
         {
            "cost":"5.00",
            "thumbnail":"http://s3.envato.com/files/195638.jpg",
            "url":"http://activeden.net/item/image-logo-shiner-effect/55085",
            "sales":"641",
            "item":"image logo shiner effect",
            "rating":"5",
            "id":"55085"
         },
         {
            "cost":"15.00",
            "thumbnail":"http://s3.envato.com/files/180749.png",
            "url":"http://activeden.net/item/banner-rotator-with-auto-delay-time/22243",
            "sales":"533",
            "item":"BANNER ROTATOR with Auto Delay Time",
            "rating":"5",
            "id":"22243"},
         {
            ...
         }]
    }
}

К этому можно получить доступ здесь также, хотя это, потому что это - настоящая длинная строка, я обрезал вышеупомянутое вниз для отображения то, что необходимо.

В основном я хочу смочь получить доступ к объектам от "items_last_week" и создать список их - первоначально, мой план состоял в том, чтобы иметь 'миниатюру' слева с 'объектом' рядом с ним, но от проигрывания вокруг с SDK сегодня это кажется слишком трудным или невозможным достигнуть этого, таким образом, я был бы более, чем доволен просто наличием данных 'объекта' из 'items_last_week' в списке.

При прибытии из php, я изо всех сил пытаюсь пользоваться любой из библиотек JSON, которые доступны Java, как это, кажется, намного больше, чем строка кода, которую я должен буду десериализовать (я думаю, что это - правильное слово) JSON, и они все, кажется, требуют некоторой формы дополнительного класса кроме сценария JSONArray/JSONObject, который я имею, которому не нравится то, что items_last_week вкладывается (снова, я думаю, что это - терминология JSON), и занимает ужасное долгое время для работы эмулятора Android.

Так, в действительности мне нужно (предпочтительно простой) способ передать items_last_week данные ListView. Я понимаю, что мне будет нужен пользовательский адаптер, который я могу, вероятно, получить голову вокруг, но я не могу понять, неважно, сколько изо дня я только что потратил попытку понять это, как получить доступ к определенным частям строки JSON..

6
задан tardate 10 April 2010 в 10:03
поделиться

1 ответ

первоначально я планировал, что у меня будет 'миниатюра' слева и 'элемент' рядом с ним, но, поиграв с SDK сегодня, это кажется слишком сложно или невозможно достичь это

Это далеко не невозможно, но это будет утомительно, если только вы не используете что-то, что уже обернуло этот шаблон для вас (и что, надеюсь, достаточно "правильно"). В Интернете проблемы производительности/пропускной способности были проблемой пользователя - в мобильном телефоне это ваша проблема.

поскольку это, похоже, гораздо больше, чем просто строка кода, которую мне нужно будет десериализовать (я думаю, это правильное слово) JSON

new JSONObject(data) - это одна строчка кода. Теперь, получение JSON, которое, как я предполагаю, вы делаете из вышеупомянутого URL, будет состоять из нескольких строк кода. Ни разбор JSON, ни получение его из Интернета не являются уникальными для Android - все это выглядело бы точно так же и в настольном Java-приложении, и в Java-сервлете, и в любом другом.

кроме JSONArray/JSONObject у меня есть скрипт, которому не нравится что items_last_week является вложенным

У меня не было проблем с разбором JSON со структурами, подобными тем, что представлены в вашем файле. Более того, это вряд ли уникально для Android - парсер JSON используется во многих других проектах на Java.

и занимает ужасно много времени для запуска на эмуляторе Android

Скорость эмулятора привязана к скорости вашей машины для разработки. Для меня эмулятор обычно медленнее, чем реальное оборудование телефона... а мой настольный компьютер четырехъядерный. Имейте в виду, что эмулятор притворяется ARM-чипсетом, работающим на вашем ПК, преобразуя ARM-опкоды в x86-опкоды на лету, поэтому он не будет быстрым и не будет хорошо использовать несколько ядер.

Итак, по сути, мне нужен (желательно простой) способ передать items_last_week в ListView.

В Android нет ничего, чтобы взять произвольную структуру JSON с произвольными данными и напрямую передать ее в ListView. Это не уникально для JSON - XML будет демонстрировать подобное явление.

Ваши варианты:

  1. Создать пользовательский ListAdapter, который обернет разобранный JSON.
  2. Преобразовать разобранный JSON в MatrixCursor (представьте двумерный массив данных) и использовать SimpleCursorAdapter.
  3. Преобразуйте разобранный JSON в ArrayList и используйте ArrayAdapter.

В краткосрочной перспективе вариант #3, вероятно, самый простой.

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

И этот вопрос слишком расплывчатый для того, чтобы получить помощь. Вы могли бы рассмотреть возможность открытия отдельного вопроса с тегом Java и JSON, где вы подробно описываете, где у вас возникают проблемы с парсером json.org.

9
ответ дан 10 December 2019 в 00:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: