2011-06-05 61 views
4

我使用的ContentProvider,并SQLiteQueryBuilderSQLiteQueryBuilder反向排序

@Override 
    public Cursor query(Uri uri, String[] projection, String selection, 
         String[] selectionArgs, String sortOrder) { 

     SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); 
     qb.setTables(NEWS_TABLE); 

     switch(sUriMatcher.match(uri)){ 
      case NEWS_ITEM_ID: qb.appendWhere(KEY_ID+ "=" + uri.getPathSegments().get(1)); 
          break; 
      default: break; 
     } 

     String orderBy; 

     if (TextUtils.isEmpty(sortOrder)) { 
       orderBy = KEY_DATE; 
      } else { 
       /* ______ WANT TO REVERSE IT HERE _____ */ 
       orderBy = sortOrder; 
      } 
     Cursor c = qb.query(newsDB, 
          projection, 
          selection, selectionArgs, 
          null, null, 
          orderBy); 

     c.setNotificationUri(getContext().getContentResolver(), uri); 

     return c; 
    } 

如何使用反向排序顺序查询?谢谢你的帮助。

回答

15

ORDER BY SQL中的子句可能有升序或降序。按默认升序使用。要设置反向排序顺序,您需要将DESC关键字添加到ORDER BY子句的末尾。

if (TextUtils.isEmpty(sortOrder)) { 
    orderBy = KEY_DATE; 
} else { 
    /* ______ WANT TO REVERSE IT HERE _____ */ 
    orderBy = KEY_DATE + " DESC"; 
}