android 联系人 字母索引,Android 自定义View实现仿通讯录,实现A-Z字母检索

前言

此篇文章利用StickyListHeadersListView和自定义view的方式实现所需效果,所以此篇文章的重点有两个方面,一是介绍StickyListHeadersListView的使用,二则为介绍字母检索的实现方式。其实技术含量不是很高,就算是记录一下吧

实现思路

本来字母检索打算用listview展示,但是网上查了一通资料后发现基本上都是使用的自定义view展示,想也对,字母检索会被频繁的刷新,如果用listview的话,感觉太重了。

效果图

a3aa24eae7eb09ec24a412efc3a0f0de.png

实现功能点

粘性显示

字母栏显示的只是主数据中含有的字母项

主数据滑动,字母栏跟着滑到相应的字母

点击字母栏定位到主数据的那一字母族的第一个数据

实现步骤

1.使用StickyListHeadersListView呈现基本数据

mListView = (StickyListHeadersListView) findViewById(R.id.id);

mAdapter = new Adapter(this, datas,letterdata);

mListView.setAdapter(mAdapter);

复制代码

2.ListView的adapter展示

public class Adapter extends BaseAdapter implements StickyListHeadersAdapter {

private List countries;

private LayoutInflater inflater;

private String chars;//字母栏中所有字母的字符串,为了拿到字母的位置

public AreaInfoAdapter(Context context, List countries, List letterdata) {

inflater = LayoutInflater.from(context);

this.countries = countries;

chars = ListToString(letterdata);

}

@Override

public int getCount() {

return countries.size();

}

@Override

public Object getItem(int position) {

return countries.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder;

if (convertView == null) {

holder = new ViewHolder();

convertView = inflater.inflate(R.layout.l

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值