Возникли проблемы с привязкой данных JSON к списку мобильных устройств в Adobe Flash Builder. - PullRequest
0 голосов
/ 29 января 2012

Привет, в последнее время у меня возникли некоторые проблемы с использованием данных JSON во Flash Builder, и я надеялся, что кто-то может мне здесь помочь.

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

Я работал над гибким мобильным приложением для планшета Blackberry Playbook с Adobe Flash Builder 4.6.Это приложение reddit, предназначенное для предоставления пользователям основного канала reddit, subreddits, функции поиска, надеюсь войти в систему и т. Д. Конечно, мне нужна помощь reddit API для доступа к этой информации, документацию которой можно найти здесь:https://github.com/reddit/reddit/wiki/API/ API использует данные в формате XML или JSON.

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

Одна запись будет состоять из: 1) миниатюры изображения в сообщении 2) заголовка сообщения 3) кнопки «Мне нравится / не нравится», но на данный момент это неважно.

Конечно, для начала я поместил компонент Список искр в представление дизайна.Затем я настроил новую службу данных HTTP с помощью панели «Данные / службы».Я указал http://www.reddit.com/r/all.json для URL.Я настроил тип возвращаемого значения и сделал тестовую операцию.Все связано просто отлично.Все данные поступили как обычно.Я дам вам представление о том, что возвращают данные, чтобы вы могли понять мою проблему позже.

Результаты тестовой операции (структура данных json):

  • NoName1
    • данные
      • после
      • до
      • дети
        • [0]
          • данные
            • media_embed
            • оценка
            • id
            • title
            • thumbnail
            • url
            • (и т. Д. И т. Д.)..)
          • вид
        • [1]
          • data
            • media_embed
            • оценка
            • название
            • миниатюра
            • (и т. д. и т. д.)
          • вид
        • [2] (продолжение массива)
      • modhash
    • kind

Как видите, чтобы добраться до thumnail, например, вам нужно будет пройти через data.children []. Data.thumnail.Когда я попытался связать эти данные с компонентом списка искров, я указал службу данных, указанную выше.Затем я указал опцию Поставщик данных как Children [], так как это значение обычно устанавливается в массиве.Вот тут-то и начинается беда.Последний вариант, поле «Метка», дал мне только одно значение: «kind».Так что, как вы можете сказать, он не ожидал, что данные пойдут дальше.Он останавливается на двух значениях только внутри каждого элемента массива, который будет Data и Kind, хотя он предлагает только Kind.Мне нужно пройти еще один уровень, чтобы получить доступ к заголовку и миниатюре.Это моя проблема.

Теперь я проанализировал код привязки и попытался изменить его, чтобы он соответствовал дополнительному вложенному значению.Нет успеха, что так всегда.Ниже приведен код, который генерирует привязка:

<s:List  

id="myList" width="100%" height="100%" change="myList_changeHandler(event)" 
    creationComplete="myList_creationCompleteHandler(event)"  labelField="kind">
<s:AsyncListViewlist="{TypeUtility.convertToCollectionredditFeedJSONResult.lastResult.data.children)}"/>         
<s:List>

Очевидно, я хотел бы иметь что-то вроде следующего: "TypeUtility.convertToCollection(redditFeedJSONResult.lastResult.data.children.data", а затем установить labelField="title" или "thumbnail".

Я, конечно, надеюсь, что кто-нибудь может мне помочь с этим.Я сошел с ума от того, что делать.Если вам нужны какие-либо дополнительные разъяснения, я был бы рад предоставить их.Я попытался объяснить ситуацию выше как можно более четко.Большое вам спасибо.

Тед

1 Ответ

0 голосов
/ 30 января 2012

У меня часто бывает такая ситуация: получить данные XML или JSON с сервера, затем попытаться использовать их в качестве dataProvider для spark.components.List или для mx.controls.Menu, и тогда они просто не будут отображатьсяданные, как я хочу их, потому что что-то в данных отличается от того, что они ожидают.И тогда они отображают неправильные XML-дочерние элементы или [Object, Object и т.).И когда данные приходят с сервера, я помещаю () новые объекты в него:

[Bindable]
private var _data:ArrayCollection = new ArrayCollection();

public function update(xlist:XMLList):void {
    _data.length = 0;
    for each (var xml:XML in xlist)
        _data.push({label: xml, event: xml.@event});
}

Этот всегда работает .И если у вас возникнет следующая проблема - мерцание Списка, то , который можно решить путем объединения данных .

Удачи в разработке Playbook, которая является классным аппаратным обеспечением: -)

...