Java 选择最多、第二最多、第三最多。。。解析中的最近用户

Java 选择最多、第二最多、第三最多。。。解析中的最近用户,java,android,android-layout,android-activity,parse-platform,Java,Android,Android Layout,Android Activity,Parse Platform,我想在从解析中检索用户时执行以下操作: 1) 我只想为那个活动页面检索一个(我猜query.setLimit(1) 2) 我只想检索最近的一个(我想query.orderByDescending(“Name”);可以做) 在另一个活动页面上,以及它变得复杂的地方 3) 我想要第二个最近的用户 在另一个活动页面上 4) 我想检索第三个最近的用户 在另一个活动页面上 5) 我想检索第四个最近的用户 在另一个活动页面上 6) 我想检索第五个最近的用户 最后,如果在列表中找不到用户,我想让他们直接转到另

我想在从解析中检索用户时执行以下操作:

1) 我只想为那个活动页面检索一个(我猜query.setLimit(1)

2) 我只想检索最近的一个(我想query.orderByDescending(“Name”);可以做)

在另一个活动页面上,以及它变得复杂的地方

3) 我想要第二个最近的用户

在另一个活动页面上

4) 我想检索第三个最近的用户

在另一个活动页面上 5) 我想检索第四个最近的用户

在另一个活动页面上 6) 我想检索第五个最近的用户

最后,如果在列表中找不到用户,我想让他们直接转到另一个活动页面

下面是活动代码

public class Fragment1 extends Fragment {

    private String currentUserId;
    private ArrayAdapter<String> namesArrayAdapter;
    private ArrayList<String> names;
    private ListView usersListView;
    private Button logoutButton;
    String userGender = ParseUser.getCurrentUser().getString("Gender");
    String activityName = ParseUser.getCurrentUser().getString("ActivityName");
    Number maxDistance = ParseUser.getCurrentUser().getNumber("Maximum_Distance");
    String userLookingGender = ParseUser.getCurrentUser().getString("Looking_Gender");
    Number minimumAge = ParseUser.getCurrentUser().getNumber("Minimum_Age");
    Number maximumAge = ParseUser.getCurrentUser().getNumber("Maximum_Age");
    Number userage = ParseUser.getCurrentUser().getNumber("Age");

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        setConversationsList();

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1_layout, container, false);


        return view;
    }

private void setConversationsList() {
    currentUserId = ParseUser.getCurrentUser().getObjectId();
    names = new ArrayList<String>();
    // String userActivitySelectionName = null;

    ParseQuery<ParseUser> query = ParseUser.getQuery();

    //  query.whereEqualTo("ActivityName",userActivitySelectionName);

    query.whereNotEqualTo("objectId", ParseUser.getCurrentUser().getObjectId());
    // users with Gender = currentUser.Looking_Gender
    query.whereEqualTo("Gender", userLookingGender);
    // users with Looking_Gender = currentUser.Gender
    query.whereEqualTo("Looking_Gender", userGender);
    query.setLimit(1);
    query.whereEqualTo("ActivityName", activityName);
    //query.whereGreaterThanOrEqualTo("Age", minimumAge);
    //query.whereLessThanOrEqualTo("Age", maximumAge);
    query.orderByDescending("Name");




    query.findInBackground(new FindCallback<ParseUser>() {

        public void done(List<ParseUser> userList, ParseException e) {
            if (e == null) {
                for (int i=0; i<userList.size(); i++) {
                    names.add(userList.get(i).get("Name").toString());
                    names.add(userList.get(i).get("Headline").toString());
                    names.add(userList.get(i).get("Age").toString());
                    names.add(userList.get(i).get("ActivityName").toString());


                    //       names.add(userList.get(i).getParseObject("ProfilePicture").;


                }




                usersListView = (ListView)getActivity().findViewById(R.id.userlistview);
                namesArrayAdapter =
                        new ArrayAdapter<String>(getActivity().getApplicationContext(),
                                R.layout.user_list_item, names);
                usersListView.setAdapter(namesArrayAdapter);

                usersListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> a, View v, int i, long l) {
                        openConversation(names, i);
                    }
                });

            } else {
                Toast.makeText(getActivity().getApplicationContext(),
                        "Error loading user list",
                        Toast.LENGTH_LONG).show();
            }
        }
    });
}

public void openConversation(ArrayList<String> names, int pos) {
    ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.whereEqualTo("Name", names.get(pos));
    query.findInBackground(new FindCallback<ParseUser>() {
        public void done(List<ParseUser> user, ParseException e) {
            if (e == null) {
                Intent intent = new Intent(getActivity().getApplicationContext(), MessagingActivity.class);
                intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
                startActivity(intent);
            } else {
                Toast.makeText(getActivity().getApplicationContext(),
                        "Error finding that user",
                        Toast.LENGTH_SHORT).show();
            }
        }
    });
}
}
公共类Fragment1扩展了Fragment{
私有字符串currentUserId;
私有ArrayAdapter名称ArrayAdapter;
私有数组列表名称;
私有列表视图用户列表视图;
私人按钮注销按钮;
字符串userGender=ParseUser.getCurrentUser().getString(“性别”);
String activityName=ParseUser.getCurrentUser().getString(“activityName”);
Number maxDistance=ParseUser.getCurrentUser().getNumber(“最大_距离”);
String userLookingGender=ParseUser.getCurrentUser().getString(“Looking_-Gender”);
Number minimumAge=ParseUser.getCurrentUser().getNumber(“最小年龄”);
Number maximumAge=ParseUser.getCurrentUser().getNumber(“最大年龄”);
Number userage=ParseUser.getCurrentUser().getNumber(“年龄”);
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
setConversationsList();
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(右布局。碎片1_布局,容器,假);
返回视图;
}
私有void setConversationsList(){
currentUserId=ParseUser.getCurrentUser().getObjectId();
名称=新的ArrayList();
//字符串userActivitySelectionName=null;
ParseQuery=ParseUser.getQuery();
//query.whereEqualTo(“ActivityName”,userActivitySelectionName);
query.whereNotEqualTo(“objectId”,ParseUser.getCurrentUser().getObjectId());
//性别=currentUser.Looking\u性别的用户
查询:whereEqualTo(“性别”,userLookingGender);
//具有Looking_Gender=currentUser.Gender的用户
查询:whereEqualTo(“寻找性别”,用户性别);
查询设置限制(1);
查询。whereEqualTo(“活动名称”,活动名称);
//查询。其中大于或等于(“年龄”,最小年龄);
//查询,其中为“年龄”,最大年龄;
query.orderByDescending(“名称”);
findInBackground(新的FindCallback(){
public void done(List userList,parsee异常){
如果(e==null){

对于(int i=0;iParse有一个名为.setSkip(int x)的方法-该参数将跳过第一个“x”结果。如果要查找“n”个最近的用户,请设置x=(n-1):

……等等

此外,如果需要最新的用户,Parse会提供一个查询方法。findFirstInBackground:

ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore");
query.whereEqualTo("playerEmail", "dstemkoski@example.com");
query.getFirstInBackground(new GetCallback<ParseObject>() {
  public void done(ParseObject object, ParseException e) {
    if (object == null) {
      Log.d("score", "The getFirst request failed.");
    } else {
      Log.d("score", "Retrieved the object.");
    }
  }
});
ParseQuery query=ParseQuery.getQuery(“游戏分数”);
查询。whereEqualTo(“playerEmail”dstemkoski@example.com");
getFirstInBackground(新的GetCallback(){
公共无效完成(ParseObject对象,parsee异常){
if(object==null){
Log.d(“score”,“getFirst请求失败”);
}否则{
Log.d(“分数”,“检索对象”);
}
}
});

如果第三个用户最近的用户不在场(列表中只有两个人),它会将自己重定向到第二个活动,这是因为我有5个活动,每个活动返回一个特定的用户。我不希望如果只有4个用户,那么一个活动将为空。我想如果调用query.setSkip(2),然后在回调中,检查返回的对象是否为null-如果为null,则不返回任何内容,这在逻辑上意味着表中没有第三个用户,然后重定向到您想要去的地方
ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore");
query.whereEqualTo("playerEmail", "dstemkoski@example.com");
query.getFirstInBackground(new GetCallback<ParseObject>() {
  public void done(ParseObject object, ParseException e) {
    if (object == null) {
      Log.d("score", "The getFirst request failed.");
    } else {
      Log.d("score", "Retrieved the object.");
    }
  }
});