1

我從一個數據庫根據在片段它實現CursorLoader如下所示的代碼填充我的ListView之前我使用SimpleCursorAdapter出於同樣的目的,但由於某些原因我不得不更改爲ArrayAdapter列表視圖表示排序的數據,而不是它是如何存儲在數據庫

數據庫只有兩列:

_id(整數主鍵自動增量)和消息(字符串不爲空)

的ListView工作正常,但問題是,列表視圖中顯示的字符串按字母順序自動排序,而不是按照它們的存儲順序排序。而我在使用SimpleCursorAdapter時沒有遇到這個問題。

任何人都可以請告訴我這次做錯了什麼,以及如何糾正它。

@Override 
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) { 
    String[] projection = {KEY_ROWID, KEY_MESSAGE}; 
    CursorLoader cursorLoader = new CursorLoader(getActivity(), 
      CONTENT_URI, projection, null, null, null); 
    return cursorLoader; 
} 
@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { 

    if(cursor != null){ 
     msgList = new ArrayList<String>(); 
     cursor.moveToFirst(); 
     while(cursor.isAfterLast() == false){ 
      msgList.add(cursor.getString(1).toString()); 
      cursor.moveToNext(); 
     } 
    } 

    mAdapter = new ArrayAdapter<String>(getActivity(), R.layout.msg_list, R.id.list_textView, msgList); 
    listview.setAdapter(mAdapter); 
} 

@Override 
public void onLoaderReset(Loader<Cursor> arg0) { 
    if (mAdapter != null) 
     listview.setAdapter(null); 
} 

由於

+0

CursorLoader(....,字符串中將sortOrder) – Tobrun 2014-09-01 21:24:44

+0

從DB中的數據是不可預知的順序總是取出。您必須指定您希望對數據進行排序的列和每個列的排序方向(默認值:ASC)。 – 2014-09-02 06:50:33

+0

@ FrankN.Stein我treid使用CursorLoader(...,KEY_ROWID +「DSC」),但它拋出錯誤沒有這樣的列_idDSC。 – 2014-09-02 08:58:18

回答

1

從DB中的數據總是以不可預測的順序取出。
您必須指定您希望對數據進行排序的列和每個列的排序方向(默認值:ASC)。

嘗試使用CursorLoader(..., KEY_ROWID + " DESC")

相關問題