android 字母索引 listview
2015-12-14 15:29
489 查看
带有字母所以的listview ,以下是效果图
1.以下是界面的布局文件
2.以下是phonelistactivity类的主要的内容
以下是项目的下载地址
http://download.csdn.net/detail/shuang__zi/9354329
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" > <ListView android: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.SideBar android:id="@+id/sidrbar" android:layout_width="20dp" android:layout_height="fill_parent" android:layout_gravity="right|center" android:layout_marginBottom="3dp" android:background="#00000000" /> <TextView android: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;// 数据显示的listview private SideBar sideBar;// 字母滑动的bar private TextView dialog;// 显示当前选中的字母 private SortAdapter adapter;// listviewadapter private CharacterParser characterParser;//汉字转换成拼音的类 private PinyinComparator pinyinComparator;//根据拼音来排列ListView里面的数据类 private List<SortModel> SourceDateList; private String type;//起始港,目的港,船公司选择界面 @Override protected 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() { @Override public 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() { @Override public 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
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories