天天看點

android下對于Cursor的中文拼音排序實作

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 這本書應該也不錯,推薦下

繼續閱讀