Parse只能看到Android中数组的第一个元素

时间:2015-01-01 23:19:58

标签: android arrays parse-platform

我使用Parse.com作为我的后端,我想从服务器下载数据。我有过滤这些数据的标签。不幸的是它错了。假设我有两个标签“city1”和“city2”,现在我只获取“city1”的数据。

public ArrayList<Dataset> getDatasetFromServer(Context context) {
    ParseQuery<ParseObject> query = ParseQuery.getQuery("Dataset");
    List<String> cities = DatabaseAdapter.getCityNames(context);
    //cities list contains "city1" and "city2"
    query.whereContainedIn("cities", Arrays.asList(cities.toArray(new String[cities.size()])));
    ArrayList<Dataset> dataset = new ArrayList<>();

    try {
        List<ParseObject> parseDataset = query.find();
        dataset = setDatasetList(parseDataset);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    return dataset;
}

问题在于:Arrays.asList(cities.toArray(new String[cities.size()])。 不知道为什么,但这种转换对Parse有误。 但是,如果我将上面的行更改为此

String[] array = {"city1", "city2"};
query.whereContainedIn("cities", Arrays.asList(array));

一切正常,我获得了city1和city2的数据。 我的问题是,这两个解决方案之间有什么区别以及如何解决这个问题,以便第一个解决方案有效?

编辑: 这也行不通:

query.whereContainedIn("cities", DatabaseAdapter.getCityNames(context));

getCityNames返回List<String>

2 个答案:

答案 0 :(得分:1)

不要将列表转换为数组,然后返回列表,而是执行此操作:

query.whereContainedIn("cities", cities);

答案 1 :(得分:0)

问题是我的错。两种解决方案都很好。 它没有奏效的原因是我的方法 DatabaseAdapter.getCityNames(context)在我没看到的第二个元素的开头放了一个空格。