Android怎么实现手机联系人分栏效果
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天小编给大家分享一下Android怎么实现手机联系人分栏效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下
千家信息网最后更新 2026年11月01日Android怎么实现手机联系人分栏效果
今天小编给大家分享一下Android怎么实现手机联系人分栏效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
效果图:

adapter具体代码如下:
public class ContactAdapter extends BaseAdapter{ private List contactBeens; private Context context; public ContactAdapter(Context context, List datas) { super(context, datas); this.context = context; contactBeens = datas; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHodler viewHodler = null; if(convertView == null){ convertView = inflater.inflate(R.layout.contact_item,parent,false); viewHodler = new ViewHodler(convertView); convertView.setTag(viewHodler); }else { viewHodler = (ViewHodler)convertView.getTag(); } viewHodler.name.setText(contactBeens.get(position).getName()); viewHodler.number.setText(contactBeens.get(position).getNumber()); viewHodler.image.setmBitmap(Analysis(contactBeens.get(position).getImage())); // 获得当前联系人名字的首字母。 其中:getAlpha()方法是自己写的一个方法(具体介绍如下), contactBeens.get(position).getAlpha()中的getAlpha()是我定义的实体类的get方法,值为当前联系人的名字的拼音。 String currentStr = getAlpha(contactBeens.get(position).getAlpha()); // 获得上一个联系人名字的首字母 String previewStr = (position - 1) >= 0 ? getAlpha(contactBeens.get(position - 1).getAlpha()) : " "; /** * 判断显示#、A-Z的TextView隐藏与可见 */ if (!previewStr.equals(currentStr)) { viewHodler.alpha.setVisibility(View.VISIBLE); viewHodler.alpha.setText(currentStr); } else { //当前联系人与上一个联系人首字母相同时,执行下面代码,隐藏alpha(这是我定义的textView)。 viewHodler.alpha.setVisibility(View.GONE); } return convertView; } public class ViewHodler{ private ContomImage image; private TextView name; private TextView number; private TextView alpha; public ViewHodler(View view) { image = (ContomImage) view.findViewById(R.id.contact_contomImage); name = (TextView) view.findViewById(R.id.contact_name); number = (TextView) view.findViewById(R.id.contact_number); alpha = (TextView) view.findViewById(R.id.alpha); } } //通过联系人的名字str ,返回联系人名字的首字母大写 @NonNull private String getAlpha(String str) { if (str == null) { return "#"; } if (str.trim().length() == 0) { return "#"; } char c = str.trim().substring(0, 1).charAt(0); //判断首字母是否是英文字母 if (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')) { return (c + "").toUpperCase(); // 大写输出 } else { return "#"; } }}
适配器代码解释如下:
List contactBeens 数据,是从适配器的构造方法传过来的。数据是根据Cursor一条一条的从虚拟机的联系人数据库读出来的。
在适配器代码中有多处出现getAlpha(),这个getAlpha()有两个含义:
getAlpha(contactBeens.get(position).getAlpha()); 解释: 从左边开始,第一次出现的getAlpha()是代码中最后定义的方法,是自己写的一个方法。 第二次出现的getAlpha()是实体类里的get方法,
现在来看一下,ContactBeen这个实体类里的成员变量:
public class ContactBeen { private String name; private String number; private Uri image; //该变量存储从虚拟机里读出来的每个联系人的名字的拼音 private String alpha; .... //剩下的为上述变量的get 和 set方法 以及该类的构造方法, 这里就不一一写出来了。}到这里为止,已经实现了小编今天要说的手机联系人分栏效果。如果有任何问题,给我留言,看见了一一答复,欢迎各位大神批评指教。
在这里,小编再给大家展示 : 如何从虚拟机中获取手机联系人的方法:
ContentResolver resolver1 = context.getContentResolver();Cursor cursor1 = resolver1.query(uri,null,null,null,"sort_key"); if(cursor1 != null && cursor1.moveToFirst()){ int indexName = cursor1.getColumnIndex(Phone.DISPLAY_NAME); int indexNumber = cursor1.getColumnIndex(Phone.NUMBER); int indexId = cursor1.getColumnIndex(Phone.CONTACT_ID); int indexPhoneId = cursor1.getColumnIndex(Phone.PHOTO_ID); int indexAlpha = cursor1.getColumnIndex("sort_key");//"sort_key"保存的是联系人名字的拼音字母 Uri uri1 = null; do { String name = cursor1.getString(indexName); String number = cursor1.getString(indexNumber); Long contactId = cursor1.getLong(indexId); Long phoneId = cursor1.getLong(indexPhoneId); String alpha = cursor1.getString(indexAlpha); if(phoneId > 0){ uri1 = ContentUris.withAppendedId(Contacts.CONTENT_URI,contactId); }else { uri1 = null ; } ContactBeen been = new ContactBeen(name,number,uri1,alpha); Log.d(TAG, "name : "+ name + " number : " + number + " uri1 : " + uri1 + "alpha :" + alpha ); }while (cursor1.moveToNext()); cursor1.close();}以上就是"Android怎么实现手机联系人分栏效果"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
联系
联系人
方法
名字
字母
代码
手机
效果
知识
篇文章
变量
实体
拼音
数据
适配器
适配
内容
大写
解释
不同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
耶加雪菲
中国互联网科技股
河南真二互联网科技有限公司
盈实互联网科技
重庆互联网络科技
互联网公司 科技公司
互联网 卓越科技
浩特互联网科技
深圳天众互联网科技公司
中国最先进互联网科技公司
蓝色互联网科技
互联网还是高科技吗
宜昌元轩互联网科技有限公司
工业互联网展湾科技股份有限公司
山东子淼互联网科技有限公司
小米互联网科技园入驻
广州互联网高科技取餐柜
山东大美朱楼互联网科技有限公司
广州三三互联网科技有限公司
小牛互联网科技有限公司地址
广东万易互联网科技有限公司惠州分公司
隆华科技工业互联网
广州恒生互联网科技有限
崇明区互联网教育科技诚信经营
深圳市罗太互联网科技有限公司
工业互联网山东科技大学
四川互联网展示科技馆设计
互联网科技品牌
互联网科技创新创业项目
互联网的黑科技实验室