java - 输入字符串“类型”自定义列表视图抛出数字格式异常
问题描述
我在自定义列表视图中尝试了以下代码。我尝试将呼叫类型替换为“传入”、“传出”和“错过”,它显示数字格式异常:对于输入字符串“类型”
assert cr != null;
if (cr.moveToLast()) {
for (int i = 0; i < cr.getCount(); i++) {
CallLogData cons = new CallLogData();
cons.setNumber(cr.getString(cr.getColumnIndex(CallLog.Calls. NUMBER)));
cons.setType(cr.getString( cr.getColumnIndex(CallLog.Calls. TYPE)));
callsListView.add(cons);
cr.moveToPrevious();
}
String dir = null;
int dircode = Integer.parseInt(getString(Integer.parseInt(CallLog.Calls. TYPE)));
switch (dircode) {
case CallLog.Calls.OUTGOING_TYPE:
dir = "OUTGOING";
break;
case CallLog.Calls.INCOMING_TYPE:
dir = "INCOMING";
break;
case CallLog.Calls.MISSED_TYPE:
dir = "MISSED";
break;
}
sb.append("\n ").append(dir);
}
cr.close();
我收到错误的这一行
int dircode = Integer.parseInt(getString(Integer.parseInt(CallLog.Calls. TYPE)));
解决方案
CallLog.Calls.TYPE
是一个列名,而不是一个整数,所以它不能被解析为一个。
根据这一行,您的数据库也保存了该类型的字符串,而不是数字。
cons.setType(cr.getString(cr.getColumnIndex(CallLog.Calls.TYPE)));
如果你想CallLogData
存储类型的字符串值,你应该向上移动 switch case 并且可能getInt
从数据库中使用,因为这看起来就是类型......虽然,你应该参考你的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));
此外,如果您自己插入/创建了数据库值,那么您可以将类型整数更改为字符串值,而不是在查询时。
推荐阅读
- python - 在未安装 python 的情况下通过云服务器在本地机器上运行 Python(py 文件)
- c++ - Tiles Stacking Problem 建立一个稳定的堆栈
- uwp-xaml - 为什么在 CanvasRenderTarget 中绘制的重叠矩形在 win2d 中可见?
- linux - 在 Linux 中运行 C 程序脚本会出现错误:意外标记 `(' 附近的语法错误
- javascript - Erro:SyntaxError: Unexpected token ':' in MUSIC BOT
- java - 通过 gzip 在解压缩字符串中显示未知字符
- reactjs - 什么时候在 React 中创建组件?
- java - 如何在 Apache poi 中创建项目符号列表?
- opencv - 如何更改opencv参考路径
- sql - 查询时报错(Error convert data type varchar to float)