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);
}
由於
CursorLoader(....,字符串中將sortOrder) – Tobrun 2014-09-01 21:24:44
從DB中的數據是不可預知的順序總是取出。您必須指定您希望對數據進行排序的列和每個列的排序方向(默認值:ASC)。 – 2014-09-02 06:50:33
@ FrankN.Stein我treid使用CursorLoader(...,KEY_ROWID +「DSC」),但它拋出錯誤沒有這樣的列_idDSC。 – 2014-09-02 08:58:18