0

これはばかげた質問のように聞こえるかもしれませんが、Imはそれに苦労しています。私は見積もりアプリケーションに取り組んでいるので、アプリケーションが起動するたびにデータベースから見積もりをランダムに並べ替えたいと思います。

CursorLoaderとViewPagerを使用しています。画面にいくつかのボタン(put-to-favourites-button)があります。これは、ContentProviderのupdate()をトリガーするコンテンツリゾルバーを使用してデータベースの列を更新します。次に、更新により、行われた変更を更新するために再クエリが発生します。すべての標準。

もちろん、これにより、random()句による順序が原因で順序が異なる行が表示され、画面が「消える」ようになります。

これを回避する方法はありますか?ランダムな順序付け機能を維持したいです。

class MyContentProvider extends ContentProvider {
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
    Cursor cursor = db.query(TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
    cursor.setNotificationUri(resolver, uri);
    return cursor;
}

@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
    int count = db.update(TABLE_NAME, values, selection, selectionArgs);
    resolver.notifyChange(uri, null);
    return count;
}
}
4

2 に答える 2

1

you can use something like

Cursor c = db.rawQuery("select * from table ORDER BY RANDOM()");

SQLite docs

于 2014-08-14T03:14:43.857 に答える
0

zaplが示唆したように、私がやったのは、列を追加することでした。これは、onCreate でランダムな値が入力される myOrder を保持し、次に myOrder による順序で Select を実行します。

于 2012-11-27T15:51:50.163 に答える