我正在尝试使用Object填充ListView。我收到了错误
“java.lang.ClassCastException:java.lang.String无法强制转换为java.lang.Long”
我从我的网络数据库中提取的数据是一个字符串,它试图把它放到一个长的。我理解为什么我得到错误以及我在哪里得到错误但我不知道如何解决它。
这是我的目标:
public static Person createFromGenericMap(Map<String, Object> object) {
Person p = new Person();
p.personID = (long) object.get("personID");
p.phoneNumber = (int) object.get("phone");
return p;
}
这就是我认为问题所在的地方:
ArrayList<Person> people = new ArrayList<>();
for (Map<String, Object> personObject : objects) {
Person p = Person.createFromGenericMap(personObject);
people.add(p);
}
更新:它正确地从我的网络数据库中提取所有信息,但问题仍然是长串字符串。
日志:
05-09 22:53:18.098 2147-2147 / com.f0xcr4f7.intelwatch D / Kumulos客户:[{lastName = Johnson,middleName = Steven,firstName = Drake,dob = 153446400,address = 2312 W Lakeview,Waco ,TX 72015,电话= 2147483647,dl = 765432345,ss = 435097656,personID = 1,timeCreated = 2016-03-30 16:41:00,timeUpdated = 2016-04-10 02:40:48,race = w,性别= m,年龄= 43,45-09 22:53:18.102 2147-2147 / com.f0xcr4f7.intelwatch E / AndroidRuntime:致命异常:主
java.lang.NullPointerException: Attempt to invoke virtual method 'long java.lang.Long.longValue()' on a null object reference
答案 0 :(得分:0)
如果要将String强制转换为Long,请使用:
my_string = str(i)
match = re.search(r"\<!-- populate table from mysql database -->(.*?)\</tbody>" , my_string).group(1)
http://developer.android.com/reference/java/lang/Long.html#valueOf(java.lang.String)
编辑:对于原始长度,请使用:Long.valueOf(String str)
答案 1 :(得分:0)
如果你获得的密钥 personID 的值没有任何非数字字符,我认为你的演员是正确的,但由于某种原因它似乎不起作用。你能试试这个:
p.personID = Long.getLong(object.get("personID").toString());
如果有的话,您还可以将Long.getLong()的第二个参数作为默认值。
干杯! :)