android 字母索引 listview
带有字母所以的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相关推荐
- android 字母索引三方,Android 字母索引动态自定义布局
public class SideBar extends View { /** 字母更新的监听器 */ private OnLetterUpdateListener onLetterUpdateLis ...
- android 字母索引三方,Android ListView字母索引(仿微信通讯录列表)
布局代码 xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_paren ...
- Android 仿美团大众字母索引实现
android字母索引流程: 界面步骤: 1.初始化右侧字母的高度以及大小 2.回执索引列表,并为列表当中的字母设置监听事件 业务逻辑步骤: 1.先从服务器读取我的好友列表 2.将 ...
- Android自定义字母索引
Android字母索引这个功能还是很常见的,例如:电话联系人,城市选择等一些功能都会用到.轮子已造好直接使用, Github源码 . 先看效果图: 自定义分析: 1.自定义View用 Paint 画笔 ...
- Android 通过ListView实现联系人列表字母索引
转载:Android自定义View--实现联系人列表字母索引_Code-Porter的博客-CSDN博客_android 字母索引 学习大神的思路和逻辑,很清晰. 这篇博文也不错:安卓仿手机联系人右侧 ...
- Android App列表之游标ListView(索引ListView)
原帖地址:http://www.apkbus.com/android-14717-1-1.html 游标ListView,提供索引标签,使用户能够快速定位列表项. 也可以叫索引ListVi ...
- Android学习系列(15)--App列表之游标ListView(索引ListView)
游标ListView,提供索引标签,使用户能够快速定位列表项. 也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧. 一看图啥都懂了: ...
- 浅谈android中手机联系人字母索引表的实现
实际上字母索引表的效果,可以说在现在的众多APP中使用的非常流行,比如支付宝,微信中的联系人,还有购物,买票的APP中选择全国城市,切换城市的时候,这时候的城市也就是按照一个字母索引的顺序来显示,看起 ...
- android 字母排序i,Android 使用ListView的A-Z字母排序功能实现联系人模块
在上一篇文章当中,主要学习了ListView的A-Z字母排序功能以及根据输入框的输入值改变来过滤搜索结果,如果输入框里面的值为空,更新为原来的列表,否则为过滤数据列表,包括汉字转成拼音的功能,如果你还 ...
最新文章
- 二叉树简介及C++实现
- 指针:自定义函数length,调用它计算字符串的长度
- Qt for Android调用原生接口打开相机拍照并存储照片
- npm 打包vue,错误 errno 126 / 清空node_modules目录
- 参数变化_风机盘管参数变化对性能造成的影响
- 用python玩转数据第三周_《用Python玩转数据》-03 数据获取与表示
- linux 大型c程序,c – 如何以编程方式在大型Linux应用程序中“拉网线”?
- 【动态规划】最大子段和
- 史上最详细解释接口自动化测试中cookie、session和token的区别【多测师_王sir】
- Android ExceptionThrowable 常见异常和解决方法 奔溃日志上报 monkey异常修改
- 19HTML5期末大作业:动画漫影视网站设计——动画漫展学习资料电影模板(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 课程设计网页规划与设计 计算机毕设网页设计源
- 12.2总结(纵使结局不如意,放弃实属下下签。)
- 新年第一文 | Lip synching detective(假唱侦探工具包)
- WINUSB设备的inf文档的编写
- cf1693C. Keshi in Search of AmShZ(div1)【最短路,反向建图】
- 图像的平均梯度AG,信息熵IE,峰值信噪比PSNR,平均值,SSIM(matlab)
- 什么是Arduino
- Java面试题总结及答案总结
- 可燃气体在线监测无线传输终端
- 按颜色分类:黄绿色系(Yellow Green)