通讯录

来源:互联网 发布:淘宝客鹊桥活动 编辑:程序博客网 时间: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>

原创粉丝点击