我已成功接收到来自 sqlite 的数据。我看到数据出现在跟踪函数中,但是我在正确显示这些数据时遇到了问题。我认为这与绑定对象有关。我一定在某个地方遗漏了一些东西,所以请纠正我错的地方。还有,这个问题其实是Adobe Air的延续:drag & drop grouped components
无论如何,这是我的 ItemRenderer:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="true">
<fx:Script>
[Bindable]
public var tree:TreeClass_Full;
[Bindable]
public var dataText:String = "empty";
public function setTest():void{
resultTextArea.text = "AAA";
}
</fx:Script>
<s:HGroup x="5" y="5" width="350" height="150" horizontalAlign="center" verticalAlign="middle">
<mx:Image id = "resultImage" width="100" height="100"/>
<s:TextArea id="resultTextArea" height="141" editable="false"
text = "{tree.Common_Name}"/>
</s:HGroup>
</s:ItemRenderer>
这是sqlite查询成功后将调用的函数:
[Bindable]
public var dragDropLeft:ArrayCollection = new ArrayCollection();
[Bindable]
public var dragDropRight:ArrayCollection = new ArrayCollection();
protected function ResultFill():void
{
// TODO Auto-generated method stub
if (arr != null){
for (var i:int = 0; i < arr.length; ++i){
var tc:TreeClass_Full = arr[i];
var rr:resultRenderer = new resultRenderer();
rr.tree = tc;
trace("--Common Name:" + tc.Common_Name);
rr.dataText = tc.Common_Name;
rr.resultImage.source = tc.Picture1;
rr.resultTextArea.text = tc.Common_Name;
trace("----Common Name:" + rr.resultTextArea.text);
dragDropLeft.addItem(rr);
}
}
}
sqlite查询成功后,会调用上述函数。这是我将我的对象(我的来自 sqlite 的 ItemClass)的信息放入我的 ItemRenderer 的地方。
我的 ItemRenderer 有两个组件:Image 和 TextArea。sqlite 包含将用于 Image 的相应图像。对于 TextArea,数据库中所有可显示的文本都将被放置在那里——这意味着来自数据库多个字段的字符串都将被放在一起。(但现在,我只想要一个字段,即 Common_Name)
之后,我将这些 ItemRenderers 放入我的列表(在本例中为 dragDropLeft)。但是,数据不会出现在程序中。然而,跟踪功能正确输出文本。
我尝试了一些东西,但我保留了一些代码,它们都产生了相同的结果:TextArea 中的文本根本没有改变。我在这里忘记了什么?
更新:
这里的代码涵盖了我使用 Bindable ArrayCollection 的地方:
<s:HGroup width="100%" height="85%" verticalAlign="middle">
<s:List dataProvider="{dragDropLeft}" width = "45%" height = "95%"
dragEnabled="true" dragMoveEnabled="true" dropEnabled="true"
itemRenderer="resultRenderer"/>
<s:List dataProvider="{dragDropRight}" width = "45%" height = "95%"
dragEnabled="true" dragMoveEnabled="true" dropEnabled="true"
itemRenderer="resultRenderer"/>
</s:HGroup>
基本上,我试图通过从 sqlite 给它值来自己操纵我的 ItemRenderer,但是从其中一位评论者看来,这似乎是不正确的。那么我们该怎么做呢?我们如何将数据发送到将添加到列表中的 ItemRenderer 对象?