通讯录
来源:互联网 发布:淘宝客鹊桥活动 编辑:程序博客网 时间:2024/05/22 02:26
导入 pinyin。jar包
1.在activity_main中定义 listview 并设置id,在MainActivity中找到Listview,然后再定义一个adapter,给Listview设置适配器。
2.然后定义一个拼音类,得到一个字符串的拼音读音,将汉字拆分成一个个的char,
char[] chars = chineseStr.toCharArray();
遍历汉字的每一个char,汉字的所有读音放在一个pinyins数组,PinyinHelper.toHanyuPinyinStringArray()
3.在给他设置默认的输出格式,HanyuPinyinOutputFormat
setToneType:去除声调
setCaseType小写
setVCharType包含Unicode特殊字符
4.定义一个排序的方法implementsComparator<Address>,重写compare方法
5.在MainActivity中Collections.sort(addressList,newSort.AddressCompartor());
代码:
MainActivity:import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.ListView;import java.util.Collections;import java.util.List;public class MainActivity extends AppCompatActivity { private ListView mListview; private AddressAdapter adapter; private List<Address> addressList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListview = (ListView) findViewById(R.id.mListView); addressList = Address.getAddress(); Collections.sort(addressList,new Sort.AddressCompartor()); adapter = new AddressAdapter(this, addressList); mListview.setAdapter(adapter); }}
address:import java.util.ArrayList;import java.util.List;public class Address { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public static List<Address> getAddress() { List<String> list = getAllMember(); List<Address> addresses = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { Address address = new Address(); address.setId(i); address.setName(list.get(i)); addresses.add(address); } return addresses; } public static List<String> getAllMember() { List<String> addresses = new ArrayList<>(); addresses.add("bdvs"); addresses.add("马你不"); addresses.add("王九"); addresses.add("李广"); addresses.add("李飞"); addresses.add("张伟"); addresses.add("马田"); addresses.add("商具体"); addresses.add("韩可以"); addresses.add("张交易"); addresses.add("韩吗"); addresses.add("张近一"); addresses.add("李进度"); addresses.add("薛美女"); addresses.add("杨今天"); addresses.add("行核对"); addresses.add("郭按时"); addresses.add("郭方式"); addresses.add("李百度"); addresses.add("王过的"); addresses.add("段更多"); addresses.add("李和他"); addresses.add("张舒服"); addresses.add("刘方式"); addresses.add("靳广东人"); addresses.add("徐是"); addresses.add("李黄飞"); addresses.add("崔广办"); addresses.add("宋答复"); addresses.add("廉干部"); addresses.add("张水电"); addresses.add("绳可以"); addresses.add("陈监狱"); addresses.add("黄回调"); addresses.add("李后台"); addresses.add("王菊花"); addresses.add("丛好热"); addresses.add("刘三个"); addresses.add("庞黄飞"); addresses.add("杨嗨翻天"); addresses.add("尹听过"); return addresses; }}
PinyinUtils:import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;public class PinyinUtils { /** * 得到一个字符串的拼音读音 */ public static String getPinyin(String chineseStr) { StringBuffer sb = new StringBuffer(); // 将汉字拆分成一个个的char char[] chars = chineseStr.toCharArray(); // 遍历汉字的每一个char for (int i = 0; i < chars.length; i++) { try { // 汉字的所有读音放在一个pinyins数组 String[] strings = PinyinHelper.toHanyuPinyinStringArray(chars[i], getDefaultFormat()); if (strings == null) { sb.append(chars[i]); } else { sb.append(strings[0]); } } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) { badHanyuPinyinOutputFormatCombination.printStackTrace(); } } return sb.toString(); } /** * 设置默认的输出格式 */ public static HanyuPinyinOutputFormat getDefaultFormat() { HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); //去除声调 outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); //小写 outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 包含Unicode特殊字符 outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); return outputFormat; }}Sort:import java.util.Comparator;public class Sort { public static class AddressCompartor implements Comparator<Address>{ @Override public int compare(Address o1, Address o2) { return PinyinUtils.getPinyin(o1.getName()).compareTo(PinyinUtils.getPinyin(o2.getName())); } }}AddressAdapter:import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import java.util.List;public class AddressAdapter extends BaseAdapter { private Context context; private List<Address> list; public AddressAdapter(Context context, List<Address> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView=View.inflate(context, R.layout.activity_address,null); holder.mTextName = (TextView) convertView.findViewById(R.id.mTextName); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.mTextName.setText(list.get(position).getName()); return convertView; } class ViewHolder { TextView mTextName; }}activity_address:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/mTextName" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
阅读全文
0 0
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- HttpSessionEventPublisher
- Spring自动装配之组件扫描
- serialVersionUID的作用
- unity的打开方式,直接在打开时切换平台
- HDU2547 无剑无我【水题】
- 通讯录
- svn admin 详细介绍
- springmvc前台传多个list
- 关于loadrunner在win10系统下的安装+配置+破解总结——终于破解成功啦!耶
- 浅谈UML中常见图的用法和意义
- Spring中ref local与ref bean区别
- 心理力学·《厚黑学全书》
- android 加载本地webView
- 7. 修改开机动画与开机铃声