【问题标题】:sort contact list in android在android中排序联系人列表
【发布时间】:2015-07-04 07:43:22
【问题描述】:
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;
    }
}

【问题讨论】:

    标签: java android sorting listview arraylist


    【解决方案1】:

    您可以简单地为此使用集合。

    Collections.sort(contactList, String.CASE_INSENSITIVE_ORDER);
    

    【讨论】:

    • 我们可以对这些联系人进行分组吗?就像一个联系人可以有很多号码一样。那么属于同一联系人的那些号码可以分组吗?
    • 您可以在从内容解析器获取联系人的同时使用地图。并将基于姓名的联系人作为键,将数字列表作为值。
    【解决方案2】:

    您可以使用排序比较器对列表进行排序。示例:

    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());
        }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-16
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      相关资源
      最近更新 更多