Flex:使用'getItemAt()'访问SQLite条目

时间:2012-09-26 13:18:20

标签: flex sqlite

我有一个填充了SQLite数据库输入的数组。当我使用此数组作为s:list的数据提供者时,它将显示我指定的数组中的所有对象。
我想访问数组中的一些对象,并一直在尝试使用getItemAt()。目前我可以返回数组中的第一个对象,但是更改索引(例如getItemAt(1)),它什么都不返回。

最终我的目标是填充FX:模型,其中数据在应用程序的其他位置输入并插入SQLite数据库。然后,该模型充当饼图的数据提供者。我可以将数据库的第一个条目传递给模型/饼图,但不能访问其他条目。

一些相关的代码部分如下。麻烦的拍摄技巧将不胜感激。

[Bindable]
    private var GHGsource:ArrayCollection;

然后:

            GHGsource = new ArrayCollection();
        }
        for each ( var o:Object in event.data )
        {
            GHGsource.addItem(o);
        }
        FullList.dataProvider = GHGsource;
    }
}

模型设置:

<fx:Declarations>
    <fx:Model id="GHG" >
<data>
<row>
<input>Enteric methane</input>
<Value> {GHGsource.getItemAt(0).answer}  </Value>

列表设置:

<s:List id="FullList">
  <s:itemRenderer>
    <fx:Component>
      <s:IconItemRenderer labelFunction="returnQuestion" messageFunction="returnAnswer">
        <fx:Script>
          <![CDATA[                             
            private function returnQuestion(item:Object):String
            {
                return "Question: " + item.question;
            }
            private function returnAnswer(item:Object):String
            {
                var response:String = "";
                if ( !item.answer || item.answer == "" )
                {
                    response = "(no response)";
                } else {
                    response = item.answer;
                }
                return response;
            }
          ]]>
        </fx:Script>
      </s:IconItemRenderer>
    </fx:Component>
  </s:itemRenderer>
</s:List>

此应用程序基于Daniel Koestler's survey ape application中列出的数据库结构。

也许深入了解s:List组件如何访问数组中的对象会对此有所帮助吗?

其他细节:

在调试模式下运行,似乎对象没有正确绑定到arraycollection。 警告:无法绑定到类'Object'上的属性'xxx'(类不是IEventDispatcher)

我试图按照以下链接关注指南,但还没有成功 link1 link2

1 个答案:

答案 0 :(得分:0)

好的,明白了。

   GHGsource = new ArrayCollection();
    }
    for each ( var o:Object in event.data )
    {
        GHGsource.addItem(o);
    }
    FullList.dataProvider = GHGsource;
 }
}

变为:

[Bindable]
private var passingArray:Array;

   GHGsource = new ArrayCollection();
   passingArray = new Array();

    }
    for each ( var o:Object in event.data )
    {
        GHGsource.addItem(o);
        passingArray[o] = new ObjectProxy(event.data[o]);
    }
    // not needed as the list is no longer needed - FullList.dataProvider = GHGsource;
}
}

然后这个有效:

<fx:Declarations>
<fx:Model id="GHG" >
<data>
<row>
<input>Enteric methane</input>
<Value> {GHGsource.getItemAt(3).answer}  </Value>