android下面需要對資料庫某列的内容,按照中文拼音的順序來排序。
baidu了下,發現常見的方式是要在資料庫增加一列來存放拼音,專門用該列來排序,比如聯系人就是用此方式實作的。
換google,發現有郵件中說,可以實作CursorWrapper,來達到排序功能。
具體看 How to do sorting on cursor?
http://groups.google.com/group/android-developers/browse_thread/thread/f1fc3e0fc87a3fc6
主要思路是:override move系列的方法,讓cursor以自己想要的順序來移動,進而達到對cursor排序的目的。
比如數組A0裡有 4(0),3(1),1(2),2(3),括号内為位置,排序後用資料記錄A1:1(2),2(3),3(1),4(0)
要通路第一個元素,則通路A1[0]得到1(2),根據(2)找到在A0中的實際位置2,即1(2)
參考了下系統的CursorWrapper和AbstractCursor代碼實作,另外有時間可以順帶了解下MatrixCursor
直接上代碼
參考文章
Android 對漢字字元串按照拼音排序
http://hi.baidu.com/luyanlong1/blog/item/2c31b51d938b79ecae5133fc.html
The Busy Coder's Guide to Android Development 這本書應該也不錯,推薦下