2016-07-13 7 views
0

私は、複数の読取り問合せを持っています。AzureのモバイルサービスクエリのParam

Query query = QueryOperations 
        .field("deleted").eq(false) 
        .select("title", "price", "district","anouncement_id") 
        .orderBy("announce_from", QueryOrder.Descending) 
        .skip(countIsLoaded) // counter 
        .top(5); 

もう一つがあるかECC ..

Query query = QueryOperations 
       .field("deleted").eq(false) 
       .orderBy("created", QueryOrder.Descending) 
       .skip(countIsLoaded) // counter 
       .top(5); 

私は、のAndriod非同期タスクを使用してクエリを実行する必要があります。 Azure Mobile Serviceのクエリを渡すメソッドが見つからないため、複数のasyntaskがあります。これは現在のコードです

try { 
    MobileServiceTable<Foo> mToDoTable = MakeEasyApplication.mClient.getTable(Foo.class); 

    MobileServiceList<Foo> listAnnounce = mToDoTable.where() 
       .field("deleted").eq(false) 
       .select("title", "price", "announce_from", "district","anouncement_id") 
       .orderBy("announce_from", QueryOrder.Descending) 
       .skip(countIsLoaded) 
       .top(5) 
       .execute().get(); 
    for (Foo foo: listAnnounce) { 
     publishProgress(foo); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

複数の非同期タスクを持つ代わりにクエリのパラメータを渡す方法はありますか?

答えて

0

@JoJoは、私の経験ごとに、私は非同期タスクに対して複数のクエリをラップする2つの方法があると思います。

  1. 異なるクエリ名を関数に定義して複数のクエリをラップします。カスタムAPIを使用し

    public Query getQuery(String qName) { 
        Query query = null; 
        switch(qName){ 
         case "QN1": 
          query = QueryOperations 
            .field("deleted").eq(false) 
            .select("title", "price", "district","anouncement_id") 
            .orderBy("announce_from", QueryOrder.Descending) 
            .skip(countIsLoaded) // counter 
            .top(5); 
          break; 
         case "QN2": 
          query = QueryOperations 
           .field("deleted").eq(false) 
           .orderBy("created", QueryOrder.Descending) 
           .skip(countIsLoaded) // counter 
           .top(5); 
          break; 
         //...... 
         default: 
         //...... 
        } 
        return query; 
    } 
    
    //In async task 
    Query query = getQuery("<qName>"); 
    MobileServiceTable<Foo> mToDoTable = MakeEasyApplication.mClient.getTable(Foo.class); 
    MobileServiceList<Foo> listAnnounce = mToDoTable.where().execute(query).get(); 
    
  2. は、あなたがモバイルbackendでカスタムAPIを定義することができ、その後、パラメータとして、カスタムAPIの名前を使用しての代わりに、複数の非同期タスクを持つ、Android clientでカスタムAPIを呼び出します。

+0

Woww ---------------おかげで、あなたは非常に多くの...極上の明確な – JoJo

+0

'MobileServiceList listAnnounce = mToDoTable.where()。(クエリ)を実行に.get() ; 'このメソッドのために私はあなたが書いたようにクエリを渡すことはできません.. – JoJo