问题定制ParseQueryAdapter

时间:2015-06-01 21:04:14

标签: java android parse-platform

我正在构建应用程序的朋友请求视图。我试图显示朋友请求列表,您可以通过点击它们来接受。

这是我在活动的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 个答案:

答案 0 :(得分: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然后使用一些图像加载库,如Picasso,或者如果它是ParseFile更改ImageView在你的单元格中ParseImageView并调用

image.setParseFile(file);
image.loadInBackground();

然后在您的Activity中将ParseQueryAdapter更改为QueryAdapter,并且不要忘记将QueryAdapter设置为ListView

friendRequestListView.setAdapter(QueryAdapter);