0

排序的光標可能聽起來像一個愚蠢的問題,但我正在努力。我正在開發一個報價應用程序,因此我希望每次啓動應用程序時都會隨機從數據庫中訂購我的報價。Android - 由RANDOM()

我使用CursorLoader和ViewPager。我在屏幕上顯示了一些按鈕(放入收藏夾按鈕),它使用ContentConvider中觸發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; 
} 
} 
+0

這是不可能重新查詢如果您在查詢中使用隨機順序,則使用相同的順序。在代碼中隨機化結果應該可以讓您按需重新隨機化。例如。如果您創建從遊標行到隨機順序的映射列表,並且不更新映射。 – zapl

+0

抱歉,我不理解第二部分。我沒有用光標本身做很多事情,我正在使用CursorAdapter。 – urSus

回答

0

我最終什麼事做,爲zapl建議,是要添加一列。這將持有myOrder,這將在的onCreate隨機值填充,然後只是做一個選擇與ORDER BY myOrder

1

,你可以使用類似

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

SQLite docs