首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

cursor拿到的值,如果不想要其中一行怎么处理

2012-12-21 
cursor拿到的值,如果不想要其中一行怎么办?比如这个帖子,提到了可以过滤数据:http://www.oschina.net/ques

cursor拿到的值,如果不想要其中一行怎么办?
比如这个帖子,提到了可以过滤数据:http://www.oschina.net/question/234345_40675
但是如果不想要其中某一行满足自己判定的条件而不是从数据库拿的显示,怎么办呢?
[最优解释]
把cursor里的数据读出来,把你想要的放到一个list里
[其他解释]
那你试试这样:

private static final Uri SMS_URI = Uri.parse("content://sms");
private static final String[] COLUMNS = new String[] {"date", "address", "body", "type"};
private static final String WHERE = "type = 2";
private static final String ORDER = "date DESC";

// ...
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(SMS_URI, COLUMNS, WHERE + " AND date > " +
            timeLastChecked, null, ORDER);


这样你可以查询content://sms,只返回你要的COLUMNS。NULL代替在查询中的“?”
[其他解释]
没明白,你查询数据库时直接过滤掉啊
[其他解释]
就是查询数据库的时候没法判断,只有拿出来之后才知道的。。。
[其他解释]
你是想要从数据库取出来之后过滤数据吗?
[其他解释]
对,但是貌似cursor跟数据库是绑定的,只要修改的话,连同数据库里的数据也会被改变,这不是我想要的
不需要修改数据库,但是数据库的数据,某些行不能直接用,要处理后才行
有没有办法?
[其他解释]
也就是cursor比如拿了500行,实际要显示的只有300行的话,怎么办?
[其他解释]
如果你用listview的话,就用list作为数据源
[其他解释]
是listview,原来用的cursoradapter 已经复写了bindview等方法,
现在不需要显示其中某些行,
如果再写一个新的adapter,感觉代码重复,而且原来也不能扔掉,在其他listview里还需要用
[其他解释]
你是要cursor先筛选好数据库里的数据再拿出来吗
[其他解释]
引用:
就是查询数据库的时候没法判断,只有拿出来之后才知道的。。。


不能用where语句实现吗?比如像Select * From TableXY Where _id < 5;这种的?
[其他解释]
不能。就是因为数据库无法过滤到合适的信息。要在数据库拿出的数据的基础上再做处理才行。

热点排行