2016-03-06 69 views
-1

我已經組合了包含紅色或不包含紅色的列表。我想按如下方式對結果進行排序 -android sqlite排序/ ORDER BY查詢

如果顏色不是紅色,則按字母順序顯示結果。 (繼續列表)--->如果顏色是紅色,則按字母順序顯示元素的其餘部分。

我期待以下結果:

//如果顏色不是紅色然後顯示結果按字母順序

橙A(顏色不是紅色&按字母順序)

藍B(顏色不紅色&字母順序)

白色C(顏色不是紅色&按字母順序)

黑d(顏色不是紅色&按字母順序)

//(在列表中的繼續)--->如果顏色是紅色,然後顯示元件的其餘部分按字母順序

紅色A(顏色是紅&字母順序)

紅B(顏色是紅色&字母順序)

紅C(顏色是紅色&字母順序)

要做到這一點,我想下面的查詢:

public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    switch (id) { 

     case SORT_BY_ALPHABETICALLY: 

      String orderAlphabetically = BY_NAME + " ASC, " 
       + BY_COLOR + " ASC"; 

      return new CursorLoader(ctx, 
        URI, 
        null, 
        null, 
        null, 
        orderAlphabetically); 

,但上面的查詢是不是給預期的結果。

+0

試試這個:http://stackoverflow.com/questions/20686415/how-to -sort-the-cursorloader-results –

+1

請您提供一些示例表數據和預期的輸出結果嗎? – Wanderer

回答

0

您想先按紅色排序,然後按名稱排序。

SQLite中,布爾表達式返回0或1,所以這正是你想要的排序:

SELECT ... ORDER BY Color = 'red' ASC, Name ASC;