你的位置:首页 > 软件开发 > 操作系统 > 联系人的侧边字母索引ListView 将手机通讯录姓名通过首字母排序。

联系人的侧边字母索引ListView 将手机通讯录姓名通过首字母排序。

发布时间:2015-12-08 19:00:39
1 package com.lixu.letterlistview; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import org.apache.http.NameValuePair; 6 impor ...

联系人的侧边字母索引ListView   将手机通讯录姓名通过首字母排序。

 

 

 1 package com.lixu.letterlistview; 2  3 import java.util.ArrayList; 4 import java.util.List; 5 import org.apache.http.NameValuePair; 6 import org.apache.http.message.BasicNameValuePair; 7 import com.lixu.letterlistview.letter.LetterBaseListAdapter; 8 import com.lixu.letterlistview.letter.LetterListView; 9 import com.lixu.lianxirenlist.R; 10 import android.app.Activity; 11 import android.content.ContentResolver; 12 import android.database.Cursor; 13 import android.graphics.Color; 14 import android.net.Uri; 15 import android.os.Bundle; 16 import android.view.Gravity; 17 import android.view.View; 18 import android.view.ViewGroup; 19 import android.widget.TextView; 20  21 public class MainActivity extends Activity { 22   private ArrayList<String> dataArray; 23  24   @Override 25   protected void onCreate(Bundle savedInstanceState) { 26     super.onCreate(savedInstanceState); 27     setContentView(R.layout.activity_main); 28     // 通过获取手机通讯录的姓名 29     dataArray = new ArrayList<String>(); 30  31     Uri uri = Uri.parse("content://com.android.contacts/contacts"); 32     ContentResolver resolver = this.getContentResolver(); 33     // 给query传递一个SORT_KEY_PRIMARY,让ContentResolver将获得的数据按照联系人名字首字母排序 34     Cursor cursor = resolver.query(uri, null, null, null, 35         android.provider.ContactsContract.Contacts.SORT_KEY_PRIMARY); 36     while (cursor.moveToNext()) 37  38     { 39       // 联系人的id 40       String id = cursor.getString(cursor.getColumnIndex(android.provider.ContactsContract.Contacts._ID)); 41       // 将联系人按姓名首字母分组 42       String sort_key_primary = cursor 43           .getString(cursor.getColumnIndex(android.provider.ContactsContract.Contacts.SORT_KEY_PRIMARY)); 44       // 获取联系人的名字 45       String name = cursor 46           .getString(cursor.getColumnIndex(android.provider.ContactsContract.Contacts.DISPLAY_NAME)); 47       dataArray.add(name); 48     } 49  50     LetterListView letterListView = (LetterListView) findViewById(R.id.letterListView); 51     letterListView.setAdapter(new TestAdapter()); 52  53   } 54  55   /** 56    * 这里 使用一个简单的 NameValuePair 对象,做为测试 57    *  58    * @Title: 59    * @Description: 60    * @Author:Justlcw 61    * @Since:2014-5-13 62    * @Version: 63   */ 64   class TestAdapter extends LetterBaseListAdapter<NameValuePair> { 65     /** 字母对应的key,因为字母是要插入到列表中的,为了区别,所有字母的item都使用同一的key. **/ 66     private static final String LETTER_KEY = "letter"; 67  68     public TestAdapter() { 69       super(); 70  71       List<NameValuePair> dataList = new ArrayList<NameValuePair>(); 72       for (int i = 0; i < dataArray.size(); i++) { 73         NameValuePair pair = new BasicNameValuePair(String.valueOf(i), dataArray.get(i)); 74         dataList.add(pair); 75       } 76       setContainerList(dataList); 77     } 78  79     @Override 80     public Object getItem(int position) { 81       return list.get(position); 82     } 83  84     @Override 85     public long getItemId(int position) { 86       return position; 87     } 88  89     @Override 90     public String getItemString(NameValuePair t) { 91       return t.getValue(); 92     } 93  94     @Override 95     public NameValuePair create(char letter) { 96       return new BasicNameValuePair(LETTER_KEY, String.valueOf(letter)); 97     } 98  99     @Override100     public boolean isLetter(NameValuePair t) {101       // 判断是不是字母行,通过key比较,这里是NameValuePair对象,其他对象,就由你自己决定怎么判断了.102       return t.getName().equals(LETTER_KEY);103     }104 105     @Override106     public View getLetterView(int position, View convertView, ViewGroup parent) {107       // 这里是字母的item界面设置.108       if (convertView == null) {109         convertView = new TextView(MainActivity.this);110         ((TextView) convertView).setGravity(Gravity.CENTER_VERTICAL);111         convertView.setBackgroundColor(getResources().getColor(android.R.color.white));112       }113       ((TextView) convertView).setText(list.get(position).getValue());114       ((TextView) convertView).setBackgroundColor(Color.GREEN);115       ((TextView) convertView).setTextSize(25);116       return convertView;117     }118 119     @Override120     public View getContainerView(int position, View convertView, ViewGroup parent) {121       // 这里是其他正常数据的item界面设置.122       if (convertView == null) {123         convertView = new TextView(MainActivity.this);124         ((TextView) convertView).setGravity(Gravity.CENTER_VERTICAL);125       }126       ((TextView) convertView).setText(list.get(position).getValue());127       ((TextView) convertView).setBackgroundColor(Color.YELLOW);128       ((TextView) convertView).setTextSize(20);129 130       return convertView;131     }132   }133 }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:联系人的侧边字母索引ListView 将手机通讯录姓名通过首字母排序。

关键词:ie

ie
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。