У меня есть следующая ошибка от некоторых пользователей.Не удалось прочитать строку 34, col 11 из CursorWindow
Не удалось прочитать строку 34, col 11 из CursorWindow. Перед доступом к данным убедитесь, что курсор инициализирован правильно.
Этот вопрос happende в follwoing линии:
@Override
public void bindView(final Context context, Cursor MessageCursor, int position) {
final MessageEntity messageEntity = MessageDataSource.cursorToMessage(MessageCursor);
// more code
}
cursorToMessage
и является:
public static MessageEntity cursorToMessage(Cursor cursor) {
MessageEntity.Builder builder = new MessageEntity.Builder();
builder.setId(cursor.getLong(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_ID)))
.setMessageId(cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_MESSAGE_ID)))
.setJabberId(cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_JID)))
.setContactUsername(cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_CONTACT_USERNAME)))
.setText(cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_TEXT)))
.setType(MessageEntity.Type.getEnum(cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_TYPE))))
.setTimestamp(cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_TIMESTAMP)))
.setDeliveryStatus(MessageEntity.DeliveryStatus.getEnum(cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_STATUS))))
.setUnread((cursor.getInt(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_UNREAD)) > 0))
.setOutgoing((cursor.getInt(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_OUTGOING)) > 0))
.setThumbnail(cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_THUMBNAIL)))
.setJsonData(cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.COLUMN_EXTRA_DATA)));
return builder.build();
}
Я найти много в SO, но другая проблема, как не удалось прочитать строку -1 или Не удалось прочитать столбец -1, что он вызван, когда вы не вызываете moveToFirst()
или у вас нет одного столбца. поскольку эта проблема возникла для некоторых пользователей, я не могу определить, почему это произошло. У вас есть идея.
Если вам нужна дополнительная информация или более код, скажите мне. Заранее спасибо.
Редактировать
Мои projection
является null
и у меня есть все столбцы. эта проблема не была выполнена для всех пользователей.
Update
Моя проблема OutOfMemory, как я поймать это исключение в одном месте в моем проекте, приложение разбился в некоторых где-то еще.
спасибо за ваш ответ, я не храню данные изображения, я просто храню один токен для получения из Интернета или устройства. Сколько можно обрабатывать большие данные? потому что это приложение для обмена сообщениями. –
Не нужно представлять данные изображения, а также любые данные, которые делают строку размером более 2 МБ. – laalto
Есть ли другая ситуация, когда случилось это исключение? например, доступ к двум потокам на одном из данных или что-то вроде этого –