我想找到以 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是实施解决方案的更好地方吗?
非常感谢...
答案 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将该语句带出错误,编译并按预期运行。