2010-11-03 391 views

回答

322

是:

boolean value = cursor.getInt(boolean_column_index) > 0; 
+26

cursor.getInt(boolean_column_index)!= 0 是更标准C. – Buttink 2014-02-28 21:53:56

+1

@Buttink'> 0'是以字节为单位更短虽然:P – 2017-02-09 14:52:54

5

您还可以使用

boolean value =cursor.getString(boolean_column_index).equals("True"); 
+5

equals()不包含 – 2013-10-11 18:16:50

18
boolean value = (cursor.getInt(boolean_column_index) == 1); 
+0

即使不完全对应这个问题(Alex's是最接近的),这是一个很好的答案,我会用这个。 – 2014-12-16 15:34:15

8

这里大部分的答案可能会导致NumberFormatExceptions或 “运算符是不确定的各类空,INT” 如果您存储int的列也被允许保留为空。 体面的方式来做到这一点是使用

Boolean.parseBoolean(cursor.getString(booleanColumnIndex));` 

虽然你现在仅限于存储字符串“真”与“假”,而不是0或1

+5

这不起作用。 Boolean.parseBoolean使用“true”或“false”字符串。如果你已经将你的布尔值存储为0或1,你总是会得到错误的。 – Gober 2013-07-17 12:32:14

+0

如果戈柏说的是真的,那么这个答案值得被低估 – 2013-10-11 18:16:02

+0

啊,他是对的。我认为结果的清晰度超过了存储字符串的重要性。 – Sojurn 2013-10-12 09:22:19

3

另一种选择

boolean value = (cursor.getString(column_index)).equals("1"); 
6

Ormlite Cursor找到的实现还检查其他答案都没有。

public boolean getBoolean(int columnIndex) { 
     if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) { 
      return false; 
     } else { 
      return true; 
     } 
    } 
2

boolean b =(cursor.getInt(cursor.getColumnIndex(“item”))!= 0);

3

boolean数据类型在Cursor中不可用。

您将在int中得到结果,因此您需要将该值转换为boolean

既可以使用

boolean b = cursor.getInt(boolean_column_index) > 0; 

boolean b = (cursor.getInt(boolean_column_index) != 0);