2013-10-24 45 views
1

對於我的Android應用程序,我已經子類的parseObject創建食品類和CustomUser類擴展ParseUser和創建「食品」和「用戶之間的關係,「戀人」 」。ParseQueryAdapter嵌套對象不工作

裏面一個CustomUser對象,我已存儲的使用 createWithoutData方法在鍵「PREF」 .CustomUser及其 各自縣對象的縣對象具有一個一對一映射

因此,當我要顯示一個特定的食物的所有愛好者在使用ParseQueryAdapter列表視圖,

ParseQueryAdapter<ParseObject> adapter = new ParseQueryAdapter<ParseObject>(getActivity(), 
    new ParseQueryAdapter.QueryFactory<ParseObject>() { 
     public ParseQuery<ParseObject> create() { 
       ParseQuery<ParseObject> query = food.getRelation("lovers").getQuery(); 
       query.selectKeys(Arrays.asList("pref");          
       return query; 
     } 
    }); 

adapter.setTextKey(Pref.COLUMN_PROF ILE_NAME); adapter.setImageKey(Pref.COLUMN_PROFILE_PIC_THUMB);

僅供參考,COLUMN_PROFILE_NAME = 「PROFILENAME」,COLUMN_PROFILE_PIC_THUMB = 「profileThumb」

現在的問題是, 「PREF」 僅僅是對實際對象的引用。所以,當列表視圖試圖讓文字和圖片,它說:「的parseObject有此鍵的數據呼叫fetchIfNeeded()來獲取數據」

我的目標是查詢傳遞給ParseQueryAdapter將取CustomUsers中嵌套的所有pref對象與該特定食物具有「戀人」關係。

解析文檔說「包含」方法不適用於關係。

請大家幫忙,我一直在這個問題上苦苦掙扎。

回答

1

要檢索一個關係,我不相信你可以使用查詢。在你的情況,你會用

ParseRelation<ParseObject> relation = user.getRelation("lovers"); 

See this documentation

希望這有助於

0

以下,顯示出配置的可用於此類平整的例子:

// Instantiate a QueryFactory to define the ParseQuery to be used for fetching items in this 
// Adapter. 
ParseQueryAdapter.QueryFactory<ParseObject> factory = 
    new ParseQueryAdapter.QueryFactory<ParseObject>() { 
     public ParseQuery create() { 
     ParseQuery query = new ParseQuery("Customer"); 
     //query.whereEqualTo("activated", true); 
     //query.orderByDescending("moneySpent"); 
    query.include("your key"); 

     return query; 
     } 
    }; 

// Pass the factory into the ParseQueryAdapter's constructor. 
ParseQueryAdapter<ParseObject> adapter = new ParseQueryAdapter<ParseObject>(this, factory); 
adapter.setTextKey("name"); 

// Perhaps set a callback to be fired upon successful loading of a new set of ParseObjects. 
adapter.addOnQueryLoadListener(new OnQueryLoadListener<ParseObject>() { 
    public void onLoading() { 
    // Trigger any "loading" UI 
    } 

    public void onLoaded(List<ParseObject> objects, ParseException e) { 
    // Execute any post-loading logic, hide "loading" UI 
    } 
}); 

// Attach it to your ListView, as in the example above 
ListView listView = (ListView) findViewById(R.id.listview); 
listView.setAdapter(adapter);