2014-10-26 69 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