2015-06-01 18 views
0

我正在構建一個應用程序的朋友請求視圖。我試圖顯示好友請求列表,點擊它們即可接受。問題自定義ParseQueryAdapter

這裏是我的代碼,我在onCreate()活動的方法中運行。正如你所看到的,我需要一個ListView項目給每個朋友請求對象給當前用戶,我將它建立到QueryAdapter。我想將每個ListView好友請求項目的圖像和文本設置爲發送好友請求的用戶的profileImageMediumusername字段。每個好友請求對象都指向發送請求的fromUser

問題在於setTextKey()setImageKey()方法不適用於這些鍵,因爲它們是朋友請求指向的對象的鍵。什麼是文本和圖像鍵設置爲這些領域

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_friend_request); 

    // Instantiate ParseQueryAdapter 
    final ParseQueryAdapter<ParseObject> friendRequestListAdapter = 
      new ParseQueryAdapter<ParseObject>(this, new ParseQueryAdapter.QueryFactory<ParseObject>() { 
       public ParseQuery<ParseObject> create() { 
        // Here we can configure a ParseQuery to our heart's desire. 
        ParseQuery<ParseObject> friendRequestQuery = new ParseQuery("FriendRequests"); 
        friendRequestQuery.whereEqualTo("toUser", ParseUser.getCurrentUser()); 
        friendRequestQuery.include("fromUser"); 

        return friendRequestQuery; 
       } 
      }); 

    // Set as adapter for our listview 
    ListView friendRequestListView = (ListView) findViewById(R.id.friendRequestListView); 
    friendRequestListView.setOnItemClickListener(friendRequestClickedHandler); 
} 

回答

1

最好的方式,我認爲您的解決方案是創建ParseQueryAdapter的子類並覆蓋getItemView()方法。就像這樣:

class QueryAdapter extends ParseQueryAdapter { 
    public QueryAdapter(Context context, ParseQueryAdapter.QueryFactory<T> queryFactory) { 
     super(context, queryFactory, 0); 
    } 

    @Override 
    public getItemView(ParseObject object, View v, ViewGroup parent) { 
     if (null == v) { 
      v = View.inflate(getContext(), R.layout.your_layout, null); 
     } 
     TextView name = (TextView) v.findViewById(R.id.text_view_id); 
     ImageView image = (ImageView) v.findViewById(R.id.image_view_id); 
     ParseUser fromUser = object.getParseUser("fromUser"); 
     name.setText(fromUser.getString("username"); 
     !-- Load your image here 
    } 
} 

我不知道你是如何加載圖像,但你有一個想法 - 如果你profileImageMedium是URL,然後使用一些圖像加載庫如畢加索,或者如果它是在你的細胞ParseImageView和ParseFile變化ImageView的調用

image.setParseFile(file); 
image.loadInBackground(); 
在你的活動變化ParseQueryAdapter

然後你QueryAdapter,不要忘記你的QueryAdapter設置到ListView

friendRequestListView.setAdapter(QueryAdapter); 
+0

完美!我首先在Android文檔中瀏覽了一下,出於某種原因,我認爲這不適合我。但是你的解釋幫助我弄清楚如何應用它。謝謝! – ThePartyTurtle