【实例简介】Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音

【实例截图】

【核心代码】

package com.example.sortlistview;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.text.Editable;

import android.text.TextUtils;

import android.text.TextWatcher;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.Toast;

import com.example.sortlistview.SideBar.OnTouchingLetterChangedListener;

public class MainActivity extends Activity {

private ListView sortListView;

private SideBar sideBar;

private TextView dialog;

private SortAdapter adapter;

private ClearEditText mClearEditText;

/**

* 汉字转换成拼音的类

*/

private CharacterParser characterParser;

private List SourceDateList;

/**

* 根据拼音来排列ListView里面的数据类

*/

private PinyinComparator pinyinComparator;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initViews();

}

private void initViews() {

//实例化汉字转拼音类

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(getApplication(), ((SortModel)adapter.getItem(position)).getName(), Toast.LENGTH_SHORT).show();

}

});

SourceDateList = filledData(getResources().getStringArray(R.array.date));

// 根据a-z进行排序源数据

Collections.sort(SourceDateList, pinyinComparator);

adapter = new SortAdapter(this, SourceDateList);

sortListView.setAdapter(adapter);

mClearEditText = (ClearEditText) findViewById(R.id.filter_edit);

//根据输入框输入值的改变来过滤搜索

mClearEditText.addTextChangedListener(new TextWatcher() {

@Override

public void onTextChanged(CharSequence s, int start, int before, int count) {

//当输入框里面的值为空,更新为原来的列表,否则为过滤数据列表

filterData(s.toString());

}

@Override

public void beforeTextChanged(CharSequence s, int start, int count,

int after) {

}

@Override

public void afterTextChanged(Editable s) {

}

});

}

/**

* 为ListView填充数据

* @param date

* @return

*/

private List filledData(String [] date){

List mSortList = new ArrayList();

for(int i=0; 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

* @param filterStr

*/

private void filterData(String filterStr){

List filterDateList = new ArrayList();

if(TextUtils.isEmpty(filterStr)){

filterDateList = SourceDateList;

}else{

filterDateList.clear();

for(SortModel sortModel : SourceDateList){

String name = sortModel.getName();

if(name.indexOf(filterStr.toString()) != -1 || characterParser.getSelling(name).startsWith(filterStr.toString())){

filterDateList.add(sortModel);

}

}

}

// 根据a-z进行排序

Collections.sort(filterDateList, pinyinComparator);

adapter.updateListView(filterDateList);

}

}

android列表字母排序,Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音...相关推荐

  1. Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/12684155 前段时间因为换工作的缘故又恰巧碰到国庆节,所以有段时间自己没有更新博客了 ...

  2. Android实现ListView的A-Z字母排序和过滤搜索功能

    原文地址: http://blog.csdn.net/xiaanming/article/details/12684155 首先先看下效果图   上面是一个带删除按钮的EditText,我们在输入框中 ...

  3. Android实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/12684155 前段时间因为换工作的缘故又恰巧碰到国庆节,所以有段时间自己没有更新博客了 ...

  4. Android 实现汉字转成拼音,实现ListView的A-Z字母排序,显现多音字城市排序

    Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音 内容来源:http://blog.csdn.net/xiaanming/article/details/12684 ...

  5. Android 使用RecyclerView实现(仿微信)的联系人A-Z字母排序和过滤搜索功能

    之前做项目的时候遇到一个需求是实现品牌的字母排序功能,网上的资料很多,但是有一部分有bug,这篇文章是我学习和解决部分bug之后的总结.今天带来的是RecyclerView的A-Z字母排序和过滤搜索功 ...

  6. android 列表回弹效果,Android ListView ScrollView回弹效果

    ios中对可以滚动的视图都在系统层面上实现了触碰到边缘的阻尼回弹效果,用户一看便知自己的操作已经到了边界.android中也有类似的方案,不过当到达边界的时候不是用阻尼的方式,而是逐渐显示一个渐变颜色 ...

  7. android列表时间轴,Android实现列表时间轴

    本文实例为大家分享了Android列表时间轴展示的具体代码,供大家参考,具体内容如下 实现的效果图如下: 实现的方式是利用recycleview的ItemDecoration这个抽象类,就是我们经常用 ...

  8. java将汉字转成拼音并按照首字母排序的有效方法。

    工作日志记录:在做项目中碰到一个需求就是需要将从服务器获取到的json对象按照username字段实现汉字排序,排序的规则是按照拼音的首字母从a~z,实现方式如下: 获得json之后提取其中的bean ...

  9. Android汉字转换成拼音

    今天介绍一个好用的类,把中文转换成拼音,具体代码如下: /**** An object to convert Chinese character to its corresponding pinyin ...

最新文章

  1. Android用户界面开发(11):Menu
  2. [原创]结构在Loadrunner中的应用
  3. 命令行mvn打包的时候报错:No compiler is provided in this environment. Perhaps you are running on a JRE
  4. 如何再发行 SAPI 5.1 核心组件
  5. 深度学习:让电脑像人一样看世界
  6. geth 以太坊钱包_以太坊Geth节点RPC API中文文档
  7. [Android] Android4.0、4.1在手机上制作fastboot线刷包;
  8. 物联网 终端设备_您拥有多少个物联网设备?
  9. adobebridge2020mac资源管理软件安装
  10. 【算法学习】纯高斯模糊算法处理灰度图片
  11. Maven学习总结(六)——Maven与Eclipse整合
  12. Java开发常见专业术语
  13. html视频怎么改大小,对视频大小、比例进行修改
  14. html 字体样式斜体,CSS font-style斜体字体倾斜体样式
  15. C++中的重载丶重写丶重定义丶重定向的区别
  16. IDEA 一直卡在Buil(编译 write classes)报错资源不足
  17. json格式简介和相关操作
  18. mysql中$和_在数据库中,$和#代表什么意思?
  19. 计算机网络自顶向下--网络层
  20. 安搭Share:苹果首款自研芯片Mac来了:11月11日秋季第三场发布会

热门文章

  1. 微软将开售82英寸Windows 8巨型平板电脑
  2. 生活和健康保险参与大多数形式的投资
  3. 《嵌入式 - 开源项目》一个小而美的嵌入式shell - letter shell
  4. Apple Pay 和 苹果内购买
  5. 定制开发映客、花椒直播app 微信直播
  6. python如何设置标签_[pyecharts1.8] 系列配置之标签设置
  7. 记录我和几个女人的情感经历
  8. C#--深拷贝和浅拷贝
  9. 【2022寒假基础集训】第二场 -L/M.小沙的remake【BIT+DP】
  10. Linux中nmap脚本的目录,在Linux中,如何使用Nmap脚本引擎(NSE )脚本