Flex 4.6 Правильное использование пакетов в Flex Mobile - PullRequest
0 голосов
/ 28 декабря 2011

Только что начал работать с Flex Mobile, я создал пакет:

package valueObjects
{
    import flash.data.SQLConnection;
    import flash.data.SQLStatement;
    import flash.filesystem.File;

    import mx.collections.ArrayCollection;
    import mx.collections.ListCollectionView;

    public class Dbsql
    {
        public var connection:SQLConnection;
        public var result:ArrayCollection = new ArrayCollection();
        public var sqlConnection:SQLConnection;
        public var brand:String;

        public function Dbsql()
        {
        }

        public function listBrands():Array
        {
            var sqlConnection:SQLConnection;
            sqlConnection = new SQLConnection();
            sqlConnection.open(File.applicationStorageDirectory.resolvePath("assets/db.sqlite"));
            var stmt:SQLStatement = new SQLStatement();
            stmt.sqlConnection = sqlConnection;
            stmt.text = 
                "SELECT HoofdGroep FROM products " +
                "GROUP BY HoofdGroep " +
                "ORDER BY HoofdGroep ASC ";
            stmt.execute();
            var result:Array = stmt.getResult().data;
            return result;          
        }

        public function listGroups(brand:String):Array
        {
            var sqlConnection:SQLConnection;
            sqlConnection = new SQLConnection();
            sqlConnection.open(File.applicationStorageDirectory.resolvePath("assets/db.sqlite"));
            var stmt:SQLStatement = new SQLStatement();
            stmt.sqlConnection = sqlConnection;
            stmt.text = 
                "SELECT HoofdGroep, ArtikelSubGroep FROM products  " +
                "WHERE HoofdGroep = '" + brand + "' " +
                "GROUP BY ArtikelSubGroep " +
                "ORDER BY ArtikelSubGroep ASC ";
            stmt.execute();
            var result:Array = stmt.getResult().data;
            return result;          
        }
    }
}

Домашний вид:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" title="Aurum Sales" initialize="init()"> <!--initialize="init()"-->

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            import valueObjects.Dbsql;
            import mx.collections.ArrayCollection;
            protected function init():void
            {
                var getClass:Dbsql = new Dbsql();
                list.dataProvider = new ArrayCollection(getClass.listBrands());
            }
        ]]>
    </fx:Script>

    <s:List id="list" x="0" y="0" width="100%" height="100%" labelField="HoofdGroep" change="navigator.pushView(GroupView, list.selectedItem)"> 
    </s:List>

</s:View>

И второй вид:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" title="{data.HoofdGroep}" initialize="init(data.HoofdGroep)">
    <fx:Declarations>
    </fx:Declarations>

    <s:navigationContent> 
        <s:Button click="navigator.popView()">
            <s:icon>
                 <s:MultiDPIBitmapSource source160dpi="@Embed('assets/arrow_left_24.png')"
                                         source240dpi="@Embed('assets/arrow_left_48.png')"
                                         source320dpi="@Embed('assets/arrow_left_64.png')"/>
            </s:icon>
        </s:Button> 
    </s:navigationContent>

    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import valueObjects.Dbsql;
            protected function init(HoofdGroep:String):void
            {
                var getClass:Dbsql = new Dbsql();
                list.dataProvider = new ArrayCollection(getClass.listGroups(HoofdGroep));
            }
        ]]>
    </fx:Script>

    <s:List id="list" x="0" y="0" width="100%" height="100%" labelField="ArtikelSubGroep"> 
    </s:List>
</s:View>

Я только что узнал, что важно установить labelField в списке на имя столбца, который вы хотите использовать из dataProvider. Есть ли другие способы получить правильный столбец из возвращенного массива?

И в целом: это правильный подход в Flex Mobile для использования пакетов?

1 Ответ

1 голос
/ 28 декабря 2011

Другим способом получения списка, показывающего другое значение, было бы создание настраиваемого средства визуализации элементов для списка.

Внутри настраиваемого средства визуализации элементов вы можете предоставить любую логику для отображения информации так, как вы хотите.

для получения дополнительной информации прочитайте эту ссылку .

эта статья поможет вам не только с средством визуализации элементов, но и с производительностью.

теперь для вашегоВторой вопрос, вы имеете в виду пространство имен пакета?

Если это так, я вижу, что вы создаете пакет 'valueObjects' и размещаете класс, который не выглядит как valueObject.Этот класс DBsql обрабатывает логику соединения с базой данных, может быть, имя «службы» было бы лучше.Например:

com.productName.vo. Это будет корневая папка для объектов-значений

com.productName.vo.ProductVO (class)

com.productName.vo..ClientVO (класс)

для модели

com.productName.service (папка)

com.productName.service.ProductService (класс)

com.productName.service.ClientService (класс)

...