布局代碼

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/letterListView"

android:layout_width="match_parent"

android:layout_height="match_parent" >

MainActivity

public class MainActivity extends Activity

{

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

LetterListView letterListView = (LetterListView) findViewById(R.id.letterListView);

letterListView.setAdapter(new TestAdapter());

}

/**

* 這里 使用一個簡單的 NameValuePair 對象,做為測試

*@Title:

*@Description:

*@Author:Justlcw

*@Since:2014-5-13

*@Version:

*/

class TestAdapter extends LetterBaseListAdapter

{

/** 字母對應的key,因為字母是要插入到列表中的,為了區別,所有字母的item都使用同一的key. **/

private static final String LETTER_KEY = "letter";

/** 這里的數據都已經按着字母排序好了, 所以傳入進來的數據也應排序好,不然會出現跳轉問題. **/

String[] dataArray = {

"鞍山", "案場", "白宮", "白雲", "白俄", "長沙", "常州", "常熟", "大廠", "大娜迦",

"福州", "福建", "富豪", "廣州", "湖南", "湖北", "胡同", "加州","加拉大", "家具",

"開門", "開始", "可能", "連接", "利用","煤化工", "密度","漫畫", "你好", "你的",

"哪些", "歐版", "排行", "貧困", "平時", "請問", "確認", "其他", "染發", "讓他",

"頭像", "是個", "數據", "天空", "退出", "提示", "為空", "維護", "新建", "想到",

"用戶", "閱讀", "知道", "這本", "足球"};

public TestAdapter()

{

super();

List dataList = new ArrayList();

for(int i=0; i

{

NameValuePair pair = new BasicNameValuePair(String.valueOf(i), dataArray[i]);

dataList.add(pair);

}

setContainerList(dataList);

}

@Override

public Object getItem(int position)

{

return list.get(position);

}

@Override

public long getItemId(int position)

{

return position;

}

@Override

public String getItemString(NameValuePair t)

{

return t.getValue();

}

@Override

public NameValuePair create(char letter)

{

return new BasicNameValuePair(LETTER_KEY, String.valueOf(letter));

}

@Override

public boolean isLetter(NameValuePair t)

{

//判斷是不是字母行,通過key比較,這里是NameValuePair對象,其他對象,就由你自己決定怎么判斷了.

return t.getName().equals(LETTER_KEY);

}

@Override

public View getLetterView(int position, View convertView, ViewGroup parent)

{

//這里是字母的item界面設置.

if(convertView == null)

{

convertView = new TextView(MainActivity.this);

((TextView)convertView).setGravity(Gravity.CENTER_VERTICAL);

convertView.setBackgroundColor(getResources().getColor(android.R.color.white));

}

((TextView)convertView).setText(list.get(position).getValue());

return convertView;

}

@Override

public View getContainerView(int position, View convertView, ViewGroup parent)

{

//這里是其他正常數據的item界面設置.

if(convertView == null)

{

convertView = new TextView(MainActivity.this);

((TextView)convertView).setGravity(Gravity.CENTER_VERTICAL);

}

((TextView)convertView).setText(list.get(position).getValue());

return convertView;

}

}

}

實際效果如下

android 联系人 字母索引,Android ListView字母索引(仿微信通訊錄列表)相关推荐

  1. 【Android 仿微信通讯录 导航分组列表-上】使用ItemDecoration为RecyclerView打造带悬停头部的分组列表

    *本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请标明出处: http://blog.csdn.net/zxt0601/article/details/52355199 本文 ...

  2. Android显示九宫图(自定义圆角,仿微信九宫格图)

    详细解析Android显示九宫图(自定义圆角,仿微信九宫格图) 这是一个自定义九宫格图片框架,里面有设置圆角大小,还有当图片一张的时候控件自定义的大小,图片的间隔,四张图片的时候图片自定义为两行两列等 ...

  3. 【Android 仿微信通讯录 导航分组列表-下】自定义View为RecyclerView打造右侧索引导航栏IndexBar

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请标明出处: http://blog.csdn.net/zxt0601/article/details/52420706 本文出 ...

  4. android 联系人 中文 排序,Android中文联系人排序及检索补丁的原理

    Android中文联系人排序及检索补丁的原理(090819更新) 2009年4月26日,更新了源码和相关文件 很久以前做了这个补丁,有幸的是朋友们都还算喜爱它,没白费功夫.不少朋友来信问它的原理,现在 ...

  5. android联系人添加公司,android添加联系人(直接添加到联系人数据库)

    添加联系人姓名.手机.头像... java核心代码 package com.kaka.addContact; import java.io.ByteArrayOutputStream; import  ...

  6. Android百度地图(地位和POI附近搜索)-仿微信、QQ地理位置的分享

    <pre> 因为到了新公司,比较忙加上又快6级考试,所以一个月没有更新博客.废话不多说,进入今天的主题.要进行百度地图的开发首先要在百度地图官网进行密钥的申请,因为百度网站对于密钥的申请已 ...

  7. Android 自定义本地图片加载库,仿微信相册

    总结一下微信的本地图片加载有以下几个特点,也是提高用户体验的关键点 1.缩略图挨个加载,一个一个加载完毕,直到屏幕所有缩略图都加载完成 2.不等当前屏的所有缩略图加载完,迅速向下滑,滑动停止时立即加载 ...

  8. android 联系人的收藏,Android QQ通讯录4.2:自动收藏联系人

    [IT168厂商动态]近日,携带"重磅炸弹"的Android版QQ通讯录4.2全新推出!新版增加全球最快的联系人查找功能,通过"超级搜索"功能0秒钟快速准确定位 ...

  9. android 联系人编辑界面,android – 以编程方式编辑联系人的姓名/电话号码

    我试图以编程方式修改联系人的显示名称: try { ArrayList ops = new ArrayList(); ops.add(ContentProviderOperation.newUpdat ...

最新文章

  1. 【linux工具】ldconfig:linux配置动态链接库
  2. 儿童版「微信」要来了?
  3. 网站优化离不开内容更新
  4. MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
  5. Tomcat web.xml配置参数详解
  6. html 批量转换excel,Excel批量转为Html,Html转换成Excel
  7. Linux 进程详解
  8. 路飞学城Python-Day75
  9. vsftp限制ip地址访问
  10. Javascript封装
  11. 测试移动信号频率的软件,移动设备的FM测试
  12. mysql打开数据表命令是_MySQL数据库命令大全
  13. 关于个人开发游戏的一些经验
  14. dart语言(dart语言菜鸟教程)
  15. javascript 数组对象 方法
  16. 谷歌浏览器chrome翻译插件完美解决开发者模式插件问题
  17. Mac关机后无法重启和重启进度条走到一半死机的解决方案
  18. 监听Home键和返回键
  19. html怎么制作小黄人,【PS教程】制作一个小黄人
  20. 伽罗华域(Galois Field,GF,有限域)

热门文章

  1. 国科大. 深度学习:期末试题与简要思路分析
  2. FizzBuzzWhizz游戏
  3. Vue创建项目、安装插件、引入全局的less变量
  4. Hadoop组件?Hadoop由什么组成?
  5. c语言的反斜杠用法,正斜杠和反斜杠-windows、web、c语言大讨论
  6. Spring Ioc/DI 控制反转和依赖注入
  7. SWUST OJ 254: 翻煎饼
  8. 保留两位小数除法算式_两位小数除法练习题竖式计算
  9. 冒泡排序算法时间复杂度
  10. C语言贪吃蛇详解4,c语言贪吃蛇详解4.食物的投放与蛇的变长