2015-07-04 2 views
0
package com.example.readcontaectlist; 

import java.util.ArrayList; 
import android.app.Activity; 
import android.content.ContentResolver; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class MainActivity extends Activity { 

    ListView listView; 
    ArrayAdapter<String> adapter; 
    ArrayList<String> arrayList; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     listView=(ListView) findViewById(R.id.listView1); 
     arrayList=new ArrayList<String>(); 
     arrayList=getNumber(getContentResolver()); 
     adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, arrayList); 
     listView.setAdapter(adapter); 
    } 

    public ArrayList<String> getNumber(ContentResolver cr) 
    { 
     ArrayList<String> contactList=new ArrayList<String>(); 
     Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
     // use the cursor to access the contacts  
     while (phones.moveToNext()) 
     { 
      String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
     // get display name 
      String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      contactList.add(name+" "+phoneNumber); 
     } 
     return contactList; 
    } 
} 
+0

Я не отрезал тело цикла while должным образом. btw Вы имеете в виду сортировку по алфавиту, как по имени? Или сортировать по? возможно, вы можете обновить свой вопрос с этим .. и исправить цикл while loop :) –

ответ

1

Для этого вы можете просто использовать Коллекции.

Collections.sort(contactList, String.CASE_INSENSITIVE_ORDER); 
+0

Спасибо за ваше предложение .. это сработало .. – user5079881

+0

Можем ли мы сгруппировать эти контакты? Как контакт может иметь много чисел .. так могут быть сгруппированы те числа, принадлежащие одному контакту? – user5079881

+0

Вы можете использовать карту, получая контакты из преобразователя контента. И поместите контакты на основе имени в качестве ключа и списка чисел в качестве значения. –

0

Вы можете сортировать свой список с помощью сортировочного компаратора. Пример:

Collections.sort(arrayList, Comparator_NAME); 

private Comparator<? super String> Comparator_NAME = new Comparator<String>() { 

    @Override 
    public int compare(String arg0, String arg1) { 
     return arg0.toLowerCase().compareTo(arg1.toLowerCase()); 
    } 
}; 
Смежные вопросы