1

Androidから連絡先を取得するためのカーソルがいくつかありましたが、すべて問題ありませんが、「Order by」句を機能させることができないという問題があります。Upper" " と句を使用しても、多くのことを試しましたが、localized collection 機能していないようです。結果を保存するためにハッシュマップを使用しているため、ハッシュマップを注文する必要があると思いますが、順序で問題を解決して保存する必要があるため、これは必要ありません処理時間。これは私のコードです:

 private Cursor getContacts() {
        // Run query
        Uri uri = ContactsContract.Contacts.CONTENT_URI;
        String[] projection = new String[] { ContactsContract.Contacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME };
        String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"
            + ("1") + "' AND "+ ContactsContract.Contacts.HAS_PHONE_NUMBER +"='" +("1")+"'";
        String sortOrder =" "+  ContactsContract.Contacts.DISPLAY_NAME +" ASC";

        CursorLoader query = new CursorLoader(context,uri, projection,
                selection, null,
            sortOrder);
        return query.loadInBackground();
      }

これは、グループごとに連絡先を取得するための other です。

contactInfo = new HashMap<String, ContactInfo>();
         Cursor c = context.getApplicationContext().getContentResolver().query(ContactsContract.Data.CONTENT_URI
                , new String[] {
                ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts._ID, 
                ContactsContract.RawContacts.CONTACT_ID },
                ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + " = ?"+ " AND "
                + ContactsContract.Contacts.HAS_PHONE_NUMBER +"='" +("1")+"'",
                new String[] { groupId },"UPPER("+ ContactsContract.Contacts.DISPLAY_NAME + ") ASC");

カーソルを取得した後、 while(c.moveToNext())コードを使用します

4

1 に答える 1

1

うまくいきました、

context.getContentResolver().query(CONTENT_URI, null, buf == null ? null : buf.toString(),args,Cons.ATTRIBUTES_NAME + " ASC");

orederby 文字列にスペースを入れずに、

=" "+  ContactsContract.Contacts.DISPLAY_NAME +" ASC"

上記の行から、属性名の前のスペースを削除します。

于 2012-11-02T18:16:51.897 に答える