从本地数据存储解析查询后发生错误

时间:2019-03-13 12:06:15

标签: android kotlin parse-platform

我正在使用Parse.com库,如果用户失去了对Internet的访问权,我想从本地数据存储中查询(查询以前的应用使用情况中的固定项目)。问题是,如果使用脱机查询,它将不会返回List<Object>,但会返回奇怪的AbstractList,而且我不知道如何将其转换为ArrayList。

有人遇到这个问题吗?

API调用:

fun getFilteredObjects(c: Context, searchQuery: String?, filteredObjectsCallback: (ArrayList<ParseObject>?, ParseException?) -> Unit){
            val q = ParseQuery.getQuery<ParseObject>(OBJECT_CLASS)
            if (!isOnline(c)) q.fromLocalDatastore()

            if (searchQuery.isNullOrEmpty()){
                q.limit = 10
            } else {
                q.whereMatches(OBJECT_NAME, searchQuery, "i")
            }

            q.findInBackground { objectList, err ->
                filteredObjectsCallback(objectList as ArrayList<ParseObject>?, err)
            }
        }

错误行:filteredObjectsCallback(objectList as ArrayList<ParseObject>?, err)

错误:

java.lang.ClassCastException: java.util.AbstractList$SubAbstractListRandomAccess cannot be cast to java.util.ArrayList

1 个答案:

答案 0 :(得分:0)

您的类型转换无效,因为类型不可转换:objectList的类型为AbstractList,并且不能像这样硬转换为ArrayList

相反,使用Arrays.asList(objectList),我认为它具有自己的实现并转换抽象列表。