2014-10-26 74 views
0

如果我的問題光標相當簡單的,我的代碼如何排序基於時間串

Cursor mCursor = this.getContentResolver().query(
      PlayerContentProviderDB.CONTENT_URI, fulldataColumns, null, null, 
      Players.SCORE +" ASC"); 

此代碼這一細分市場,從一切我所看到的,應以升序排列光標基於Players.SCORE,但事實並非如此。

參考Players.SCORE將始終是
mm:ss:msmsms(讀取分鐘:秒:毫秒)格式的字符串。

另外這裏是查詢方法的代碼在我的ContentProvider

public Cursor query(Uri uri, String[] projection, String selection, 
     String[] selectionArgs, String sortOrder) { 
    SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder(); 
    checkColumns(projection); 
    queryBuilder.setTables(PlayerContract.Players.PLAYERS_TABLE_NAME); 
    int uriType = sURIMatcher.match(uri); 
    switch (uriType) { 
    case ALL_SCORES: 
    break; 
    case SCORE_ID: 
    queryBuilder.appendWhere(PlayerContract.Players.ID + "=" 
    + uri.getLastPathSegment()); 
    break; 
    default: 
    throw new IllegalArgumentException("Unknown URI: " + uri); 
    } 
    SQLiteDatabase db = this.dbHelper.getReadableDatabase(); 
    Cursor cursor = queryBuilder.query(db, projection, selection, 
    selectionArgs, null, null, sortOrder); 
    // Notify potential listeners 
    cursor.setNotificationUri(getContext().getContentResolver(), uri); 
    return cursor; 

我的問題是,爲什麼這劑代碼無法正常工作,我該如何解決?

(有關此代碼的另一個有趣的現象是,我也試圖限制語句添加到排序,我已經讀了作品的結尾,但是我的是不是)

回答

0

我終於找到了這個問題的答案。事實證明,我的代碼是正確的,但由於某種原因,我仍在處理我的ContentProvider.query()被調用兩次。一旦使用了正確的參數並再次使用不正確的參數(即:sortOrder == null)。

另外請注意,您可以按數字順序爲SQL不同

1

如果我讀 the SQLite documentation正確地說, date()預計值爲 %Y-%m-%d。你的不是。

如果您使用的是兩位數的分鐘和秒值,則應該排序而沒有任何功能。

(以上是從原來的問題,而不是更新)

而且,你查詢ContentProvider。沒有要求ContentProvider提供排序。如果這是你自己的ContentProvider,你需要檢查它是否將排序子句傳遞給SQLite或任何支持存儲。

+0

謝謝你,我就在想,這是錯誤的,但試圖爲建議從別的地方排序整數和字符串不排序的一串數字。生病編輯我的問題,以顯示我最初的東西 – Noob 2014-10-26 18:03:57

+0

好吧,我去檢查並添加了我非常確定的代碼。它看起來像它會工作,但我可能是錯的 – Noob 2014-10-26 18:27:57

+0

@Noob:這看起來沒問題。您可能會考慮添加[對'buildQuery()']的調用(http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html#buildQuery(java.lang.String [],%20java)。 lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String))並記錄它,看看是否給你任何線索。 – CommonsWare 2014-10-26 21:03:58