0

我想創建一個ListView使用LoaderCallbacks我能夠看到列表中的所有元素。但是現在我想對它進行排序,因此數據庫中的最新項目是第一項。我在數據庫中有一個名爲COLUMN_MESSAGE_DATE的Coulmn,其中包含一個時間戳,我希望最新的行位於最前面。在onCreateLoader中,當我返回裝入程序時,我按這個Coulmn排序,但最後一行依然在底部。我錯過了什麼?Sort ListView使用LoaderCallbacks <Cursor>日期

public class MessageListFragment extends Fragment implements LoaderCallbacks<Cursor>{ 
@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) 
{ 
    // Create the Cursor that will take care of the data being displayed 

    Log.d("TAG", "onCreateLoader..."); 
    return new CursorLoader(getActivity(),CONTENT_URI, null, null, null,DataBase.COLUMN_MESSAGE_DATE);//I thought this should sort the list by date... 
} 

@Override 
public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) 
{ 
    // Now Bind the data to the View 
    Log.d("TAG", "onLoadFinished...ARG1= " + cursor); 
    mCusrorAdapter = new CustomCursorAdapter(getActivity(), cursor); 
    mListView.setAdapter(mCusrorAdapter); 

} 

}

+0

你的ContentProvider查詢方法是否正確地實現了排序順序? – ramaral

回答

2

雖然我不能肯定,沒有看到你的數據,時間戳通常是一個遞增值。也就是說,當前時間戳比舊的時間戳更大。默認的排序順序是ASCending。這裏我相信你想要DESCending:

return new CursorLoader(getActivity(),CONTENT_URI, null, null, null,DataBase.COLUMN_MESSAGE_DATE + " DESC"); 
+1

是的,你是我的朋友! – user1163234