Android Listview显示排序后的数据,而不是数据在数据库中的存储方式

Android Listview显示排序后的数据,而不是数据在数据库中的存储方式,android,android-sqlite,android-arrayadapter,simplecursoradapter,Android,Android Sqlite,Android Arrayadapter,Simplecursoradapter,我正在根据下面显示的代码从数据库填充ListView,代码片段实现了CursorLoader。早些时候,出于同样的目的,我使用SimpleCrsorAdapter,但出于某些原因,我不得不改为ArrayAdapter 数据库只有两列: _id(整型主键自动递增)和消息(字符串不为空) ListView工作正常,但问题是ListView中显示的字符串自动按字母顺序排序,而不是按存储顺序排序。然而,在使用SimpleCursorAdapter时,我没有遇到这个问题 谁能告诉我这次做错了什么以及如何纠

我正在根据下面显示的代码从数据库填充ListView,代码片段实现了CursorLoader。早些时候,出于同样的目的,我使用SimpleCrsorAdapter,但出于某些原因,我不得不改为ArrayAdapter

数据库只有两列:

_id(整型主键自动递增)和消息(字符串不为空)

ListView工作正常,但问题是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);
}
@覆盖
公共加载器onCreateLoader(int arg0,Bundle arg1){
字符串[]投影={KEY_ROWID,KEY_MESSAGE};
CursorLoader CursorLoader=新的CursorLoader(getActivity(),
内容(URI,投影,null,null,null);
返回游标装入器;
}
@凌驾
public void onLoadFinished(加载器,光标){
如果(光标!=null){
msgList=newarraylist();
cursor.moveToFirst();
while(cursor.isAfterLast()==false){
添加(cursor.getString(1.toString());
cursor.moveToNext();
}
} 
mAdapter=newarrayadapter(getActivity(),R.layout.msg_list,R.id.list_textView,msgList);
setAdapter(mAdapter);
}
@凌驾
公共void onLoaderReset(加载程序arg0){
如果(mAdapter!=null)
setAdapter(空);
}

谢谢

数据库中的数据总是以不可预测的顺序获取。
您必须指定要对数据进行排序的列以及每列的顺序方向(默认值:ASC)


尝试使用
CursorLoader(…,KEY_ROWID+“DESC”)

CursorLoader(…,String sortOrder)从数据库中获取数据的顺序总是不可预测的。您必须指定要对其进行数据排序的列,以及每列的顺序方向(默认值:ASC)。@FrankN.Stein i treid使用游标加载程序(…,KEY_ROWID+“DSC”),但它不会引发任何此类列的错误。@FrankN.Stein谢谢。我用我的评论做了一个答案,这样你就可以接受它,把问题从未回答的问题中抽出来。