Ошибка после разбора запроса из локального хранилища данных - PullRequest
0 голосов
/ 13 марта 2019

Я использую библиотеку Parse.com и хочу запросить из локального хранилища данных, потерял ли пользователь доступ к Интернету (запрос по закрепленным элементам из предыдущего использования приложения).Проблема в том, что если использовать автономный запрос, он не вернет 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 голосов
/ 13 марта 2019

Ваше приведение неверно, потому что типы не конвертируемы: objectList относится к типу AbstractList, и его нельзя точно преобразовать в ArrayList.

Вместо этого используйте Arrays.asList(objectList), я думаюон имеет собственную реализацию и переводит абстрактный список.

...