带有字母所以的listview ,以下是效果图

1.以下是界面的布局文件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="fill_parent" ><ListViewandroid:id="@+id/country_lvcountry"android:layout_width="match_parent"android:layout_height="fill_parent"android:divider="@null"android:scrollbars="none" ></ListView><com.app.shippingcity.widget.phonelist2.SideBarandroid:id="@+id/sidrbar"android:layout_width="20dp"android:layout_height="fill_parent"android:layout_gravity="right|center"android:layout_marginBottom="3dp"android:background="#00000000" /><TextViewandroid:id="@+id/dialog"android:layout_width="80.0dip"android:layout_height="80.0dip"android:layout_gravity="center"android:background="@drawable/sidebar_dialog_background"android:gravity="center"android:textColor="#ffffffff"android:textSize="30.0dip"android:visibility="gone" /></FrameLayout>

主要是一个策划字母索引和一个listview,中间会显示当前选中的字母

2.以下是phonelistactivity类的主要的内容

public class PhoneListActivity extends Activity {private String[] data={"刘备","关羽","张飞","刘禅","诸葛亮","孙尚香","赵云","姜维","夏侯霸","魏延","黄忠","月英","庞统","曹操","夏侯敦","夏侯渊","曹仁","曹丕","张辽","典韦","许褚","张郃","甄姬","司马懿","吕布","庞德","马超","袁熙","徐晃","孙坚","孙策","孙权","孙尚香","黄盖","大乔","周瑜","太史慈","周泰","吕蒙","陆逊","甘宁","凌统","凌操","孔融","貂蝉","袁绍","袁谭","袁熙","袁尚","张角","张宝","张粱","孟获","祝融","assdfa","xialiu","@adsf"};private ListView sortListView;// 数据显示的listviewprivate SideBar sideBar;// 字母滑动的barprivate TextView dialog;// 显示当前选中的字母private SortAdapter adapter;// listviewadapterprivate CharacterParser characterParser;//汉字转换成拼音的类private PinyinComparator pinyinComparator;//根据拼音来排列ListView里面的数据类private List<SortModel> SourceDateList;private String type;//起始港,目的港,船公司选择界面@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.reciving_adress);initViews();initData();}private void initViews() {type=getIntent().getStringExtra("type");// 实例化汉字转拼音类characterParser = CharacterParser.getInstance();pinyinComparator = new PinyinComparator();sideBar = (SideBar) findViewById(R.id.sidrbar);dialog = (TextView) findViewById(R.id.dialog);sideBar.setTextView(dialog);// 设置右侧触摸监听sideBar.setOnTouchingLetterChangedListener(new OnTouchingLetterChangedListener() {@Overridepublic void onTouchingLetterChanged(String s) {// 该字母首次出现的位置int position = adapter.getPositionForSection(s.charAt(0));if (position != -1) {sortListView.setSelection(position);}}});sortListView = (ListView) findViewById(R.id.country_lvcountry);sortListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// 这里要利用adapter.getItem(position)来获取当前position所对应的对象Toast.makeText(PhoneListActivity.this,((SortModel) adapter.getItem(position)).getName(),Toast.LENGTH_SHORT).show();Intent intent=new Intent();intent.putExtra("data", ((SortModel) adapter.getItem(position)).getName());setResult(1003, intent);}});}private void initData(){SourceDateList = filledData(data);// 根据a-z进行排序源数据Collections.sort(SourceDateList, pinyinComparator);adapter = new SortAdapter(PhoneListActivity.this, SourceDateList);sortListView.setAdapter(adapter);}/*** 为ListView填充数据* @param date* @return*/private List<SortModel> filledData(String[] date) {List<SortModel> mSortList = new ArrayList<SortModel>();for (int i = 0; i < date.length; i++) {SortModel sortModel = new SortModel();sortModel.setName(date[i]);// 汉字转换成拼音String pinyin = characterParser.getSelling(date[i]);String sortString = pinyin.substring(0, 1).toUpperCase();// 正则表达式,判断首字母是否是英文字母if (sortString.matches("[A-Z]")) {sortModel.setSortLetters(sortString.toUpperCase());} else {sortModel.setSortLetters("#");}mSortList.add(sortModel);}return mSortList;}
}

实现也是比较的简单,主要是向listview中添加数据,而在添加数据前,进行了排序,具体的排序类和拼音汉字转换类可以查看源代码

以下是项目的下载地址

http://download.csdn.net/detail/shuang__zi/9354329

android 字母索引 listview相关推荐

  1. android 字母索引三方,Android 字母索引动态自定义布局

    public class SideBar extends View { /** 字母更新的监听器 */ private OnLetterUpdateListener onLetterUpdateLis ...

  2. android 字母索引三方,Android ListView字母索引(仿微信通讯录列表)

    布局代码 xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_paren ...

  3. Android 仿美团大众字母索引实现

    android字母索引流程: 界面步骤:   1.初始化右侧字母的高度以及大小   2.回执索引列表,并为列表当中的字母设置监听事件 业务逻辑步骤:    1.先从服务器读取我的好友列表    2.将 ...

  4. Android自定义字母索引

    Android字母索引这个功能还是很常见的,例如:电话联系人,城市选择等一些功能都会用到.轮子已造好直接使用, Github源码 . 先看效果图: 自定义分析: 1.自定义View用 Paint 画笔 ...

  5. Android 通过ListView实现联系人列表字母索引

    转载:Android自定义View--实现联系人列表字母索引_Code-Porter的博客-CSDN博客_android 字母索引 学习大神的思路和逻辑,很清晰. 这篇博文也不错:安卓仿手机联系人右侧 ...

  6. Android App列表之游标ListView(索引ListView)

    原帖地址:http://www.apkbus.com/android-14717-1-1.html 游标ListView,提供索引标签,使用户能够快速定位列表项.       也可以叫索引ListVi ...

  7. Android学习系列(15)--App列表之游标ListView(索引ListView)

    游标ListView,提供索引标签,使用户能够快速定位列表项.       也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧.       一看图啥都懂了: ...

  8. 浅谈android中手机联系人字母索引表的实现

    实际上字母索引表的效果,可以说在现在的众多APP中使用的非常流行,比如支付宝,微信中的联系人,还有购物,买票的APP中选择全国城市,切换城市的时候,这时候的城市也就是按照一个字母索引的顺序来显示,看起 ...

  9. android 字母排序i,Android 使用ListView的A-Z字母排序功能实现联系人模块

    在上一篇文章当中,主要学习了ListView的A-Z字母排序功能以及根据输入框的输入值改变来过滤搜索结果,如果输入框里面的值为空,更新为原来的列表,否则为过滤数据列表,包括汉字转成拼音的功能,如果你还 ...

最新文章

  1. 二叉树简介及C++实现
  2. 指针:自定义函数length,调用它计算字符串的长度
  3. Qt for Android调用原生接口打开相机拍照并存储照片
  4. npm 打包vue,错误 errno 126 / 清空node_modules目录
  5. 参数变化_风机盘管参数变化对性能造成的影响
  6. 用python玩转数据第三周_《用Python玩转数据》-03 数据获取与表示
  7. linux 大型c程序,c – 如何以编程方式在大型Linux应用程序中“拉网线”?
  8. 【动态规划】最大子段和
  9. 史上最详细解释接口自动化测试中cookie、session和token的区别【多测师_王sir】
  10. Android ExceptionThrowable 常见异常和解决方法 奔溃日志上报 monkey异常修改
  11. 19HTML5期末大作业:动画漫影视网站设计——动画漫展学习资料电影模板(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 课程设计网页规划与设计 计算机毕设网页设计源
  12. 12.2总结(纵使结局不如意,放弃实属下下签。)
  13. 新年第一文 | Lip synching detective(假唱侦探工具包)
  14. WINUSB设备的inf文档的编写
  15. cf1693C. Keshi in Search of AmShZ(div1)【最短路,反向建图】
  16. 图像的平均梯度AG,信息熵IE,峰值信噪比PSNR,平均值,SSIM(matlab)
  17. 什么是Arduino
  18. Java面试题总结及答案总结
  19. 可燃气体在线监测无线传输终端
  20. 按颜色分类:黄绿色系(Yellow Green)

热门文章

  1. A Semi-supervised Graph Attentive Network for Financial Fraud Detection 个人总结
  2. 迷宫寻宝(BFS模板题)
  3. 域服务器统一修改ie首页,通过AD域策略对IE做统一设定
  4. Java生成Excel表格的代码
  5. 啡鸟集:同样是冰咖啡,冷萃咖啡为什么比较贵?
  6. k8s进阶篇-云原生存储ceph
  7. 扩充虚拟机文件系统的磁盘空间
  8. 计算机考研数学难,考研数学一考那些内容数一是不是最难的
  9. UE4 Pak 文件格式
  10. JQuery判断一个元素是否含有子元素