2015-06-01 20 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