从parse.com重新排序数组

时间:2013-10-21 16:42:06

标签: java android arrays arraylist parse-platform

我从parse.com获取一个数组。我正在使用数组来检索数组:

 fightList.whereContainedIn("objectId", itemListCard);
 fightList.findInBackground(new FindCallback<ParseObject>() ....

我的第一个阵列; itemListCard按特定顺序排列。在我findInBackground之后,我的在线数组(objectId)完全无序。这是因为我从Parse.com获取它,因此它会在检索时添加到数组中。我需要:

1。重新排序数组objectId以匹配itemListCard

2。按objectId

的顺序检索itemListCard

Java代码:

HomeItemList = new ArrayList<HomeItem>();
    fightList.whereContainedIn("objectId", itemListCard);

    fightList.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objectId, ParseException e) {
            if (e == null) {

                for (int i = 0; i < objectId.size(); i = i + 2) {
                    HomeItem homeItem = new HomeItem();
                    homeItem.setHomeItemID(k);
                    k++;
                    //set Red Array
                    homeItem.setHomeItemRedName(objectId.get(i).getString("Name"));
                    homeItem.setHomeItemRedAge(objectId.get(i).getString("Age"));
                    homeItem.setHomeItemRedRecord(objectId.get(i).getString("Record"));
                    homeItem.setHomeItemRedHeight(objectId.get(i).getString("Height"));
                    homeItem.setHomeItemRedWeight(objectId.get(i).getString("Weight"));
                    homeItem.setHomeItemRedCity(objectId.get(i).getString("Location"));
                    homeItem.setHomeItemRedExp(objectId.get(i).getString("Experience"));

                    //set blue Array
                    homeItem.setHomeItemBlueName(objectId.get(i+1).getString("Name"));
                    homeItem.setHomeItemBlueAge(objectId.get(i+1).getString("Age"));
                    homeItem.setHomeItemBlueRecord(objectId.get(i+1).getString("Record"));
                    homeItem.setHomeItemBlueHeight(objectId.get(i+1).getString("Height"));
                    homeItem.setHomeItemBlueWeight(objectId.get(i+1).getString("Weight"));
                    homeItem.setHomeItemBlueCity(objectId.get(i+1).getString("Location"));
                    homeItem.setHomeItemBlueExp(objectId.get(i+1).getString("Experience"));

                    HomeItemList.add(homeItem);
                    }

                HomeListAdapter = new HomeListAdapter(getApplicationContext(), 0, HomeItemList);
                adapter.addSection(" Fight Card ", HomeListAdapter);

            } else {
                progressDialog.dismiss();
                Log.d("Display Card", "Error parsing Card");
                Log.d("Card Error:", e.getMessage());
                Toast.makeText(databaseFightCard.this, "Could not retrieve parse info. Try again later", Toast.LENGTH_LONG).show();
            }
            listView.setAdapter(adapter);
            progressDialog.dismiss();
        }
    });

注意

for循环按2计算,因为这是我想要的结构:

 objectId[0] vs objectId[1]
 objectId[2] vs objectId[3]
 objectId[4] vs objectId[5]
 objectId[6] vs objectId[7]
 ....and so on

因此需要特定的订单。

1 个答案:

答案 0 :(得分:0)

您可以使用orderByAscending()和orderByDescending()来控制项目的返回顺序。

在你的情况下:

fightList.whereContainedIn("objectId", itemListCard);
fightList.orderByAscending("objectId");
fightList.findInBackground(new FindCallback<ParseObject>() ....

请参阅Query Constraints section of the the Parse Android Guide