CallLog.Calls.TYPE
- это имя столбца, а не целое число, поэтому его нельзя проанализировать как единое целое.
В соответствии с этой строкой ваша база данных также содержит строку для типа, а не число.
cons.setType(cr.getString(cr.getColumnIndex(CallLog.Calls.TYPE)));
Если вы хотите CallLogData
сохранить строковое значение типа, вам следует переместить регистр переключателя вверх и, возможно, вместо этого использовать getInt
из базы данных, поскольку, похоже, именноtype is ... Хотя, вы должны обратиться к своему CREATE TABLE
утверждению, чтобы убедиться в этом.
if (cr.moveToLast()) {
int numIdx = cr.getColumnIndex(CallLog.Calls.NUMBER);
int typeIdx = cr.getColumnIndex(CallLog.Calls.TYPE);
for (int i = 0; i < cr.getCount(); i++) {
CallLogData cons = new CallLogData();
cons.setNumber(cr.getString(numIdx));
String type;
int callType = cr.getInt(typeIdx);
switch (callType) {
case CallLog.Calls.OUTGOING_TYPE:
type = "OUTGOING";
break;
case CallLog.Calls.INCOMING_TYPE:
type = "INCOMING";
break;
case CallLog.Calls.MISSED_TYPE:
type = "MISSED";
break;
default:
type = "UNKNOWN";
}
cons.setType(type);
}
Если столбец базы данных действительно является строкой, тогда вы захотите это
Integer.parseInt(cr.getString(typeIdx));
Кроме того, если вы сами добавили / создали значения базы данных, вы можете изменитьтип целое число в строковое значение, а не во время запроса.