从SQLite 3数据库中使用Cursor随机化ListView的总体...

时间:2011-12-08 09:45:33

标签: android listview random simplecursoradapter

我想找到以 RANDOM 方式从(非常小的< 50记录)数据库填充 Android ListView 的最佳方式,这意味着每个我从SQLLite 3 DB重新查询数据时,它以不同的随机顺序填充ListView。

我以标准方式设置listview:(a)通过DB Query填充DBCursor,(b)使用普通输入填充SimpleCursorAdapter,最后(c)设置Listview适配器。

伪代码:

DBCursor = db.query();     
cursorAdapter = new SimpleCursorAdapter(this, R.layout.xml-file, DBCursor, DB_Columns, db_to);    
listView.setAdapter(cursorAdapter);

我认为可能的解决方案是以某种方式调整DB.Query()语句:

db.query(table, columns, selection, selectionArgs, groupBy, having , orderBy);

问题正是'什么'来调整和'如何'在语法上做到这一点。或者,这真的是审讯的最佳场所,或者由此产生的Cursor是实施解决方案的更好地方吗?

非常感谢...

2 个答案:

答案 0 :(得分:2)

在查询中将“random()”指定为orderBy。 random()它是一个sqlite核心函数。您可以在此处阅读:http://www.sqlite.org/lang_corefunc.html

答案 1 :(得分:1)

经过一些研究和实验后,我发现了一些有用的解决方案:

而不是使用以下形式的Androids预编译查询语句:

db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);

我使用了db.rawQuery,它允许更灵活的SQL语句。

db.rawQuery("select * from catstory ORDER BY RANDOM()", null);

Eclipse IDE将该语句带出错误,编译并按预期运行。