2010年11月16日火曜日

[android]ふりがなソートについて

連絡帳から情報をリスト化するときに、よくありがちな
「ふりがなでソートがしたい」のメモです。


managedQuery()メソッドを使用してリスト表示していました。
ふりがなソートを行うにあたり以下の情報で、
苗字/名前のふりがなが参照できます。
android.provider.ContactsContract.CommonDataKinds.StructuredName
PHONETIC_FAMILY_NAME
PHONETIC_GIVEN_NAME


それそを以下のsortOrderで指定すればソート完成!
managedQuery(uri,projection,selection,selectionArgs,sortOrder)


となるのですが、ふりがな情報と、別のクラスの情報を選択して表示する場合、
selection で設定ができませんでした。
よく見てみると、それぞれのクラスには「CONTACT_ID」データがあるので、
それを使えば他のクラスのデータと関連した選択が可能になるらしい。


以上を踏まえた結果、以下のコードのようになりました。

Cursor c1 = managedQuery(uri, projection,
Data.MIMETYPE + "=?",
 new String[] { StructuredName.CONTENT_ITEM_TYPE },
StructuredName.PHONETIC_FAMILY_NAME + " ASC ,"
+ StructuredName.PHONETIC_GIVEN_NAME + " ASC");
while (c1.moveToNext()) {
Cursor c2 = managedQuery(uri, projection,
Data.CONTACT_ID + "=? AND " + Data.MIMETYPE + "=?",
new String[] { c1.getString(0),Event.CONTENT_ITEM_TYPE},
null);
while (c2.moveToNext()) {
//出力の記述
}
}



0 件のコメント:

コメントを投稿