sqlite からデータを正常に受信しました。トレース機能にデータが表示されていることがわかりますが、これらのデータを正しく表示するのに問題があります。オブジェクトのバインドと関係があると思います。私はどこかで何かが欠けているに違いないので、間違っているところを修正してください。また、この質問は実際にはAdobe Airの続きです:グループ化されたコンポーネントをドラッグアンドドロップします
とにかく、ここに私の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 の 2 つのコンポーネントがあります。sqlite には、Image に使用されるそれぞれのイメージが含まれています。TextArea の場合、データベースからのすべての表示可能なテキストがそこに配置されます。つまり、データベースの複数のフィールドからの文字列がすべてそこにまとめられます。(しかし、今のところ、Common_Name という 1 つのフィールドだけが必要です)
その後、これらの ItemRenderer をリスト (この場合は 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 を操作しようとしましたが、コメンテーターの 1 人から、これは正しくないようです。では、どうすればよいのでしょうか。リストに追加される ItemRenderer オブジェクトにデータを送信するにはどうすればよいでしょうか?