Android之開源類庫Pinyin4j的使用----搜尋連絡人

來源:互聯網
上載者:User

Android之開源類庫Pinyin4j的使用----搜尋連絡人

Pinyin4j只能算是Java開源類庫,但是在Android的應用開發中也經常被用到。大家都用過手機的通訊錄,通訊錄的搜尋連絡人的功能,用pinyin4j就可以實現。下面我給大家帶來這個例子,使用pinyin4j實現搜尋連絡人功能。

首先先對pinyin4j做一個簡單的介紹:

pinyin4j是一個流行的Java庫,支援中文字元和拼音之間的轉換,拼音的輸出格式也可以定製,並且支援漢字的多音字。pinyin4j的官方網是:http://pinyin4j.sourceforge.net/

pinyin4j的使用手冊,百度文庫裡有一個文檔,大家要是想詳細瞭解pinyin4j的使用,請點擊pinyin4j的使用手冊。

再繼續講之前,還是先帶大家看一下本案例的:




接下來咱們看一下工程目錄:


本案例總共就兩個類,其中PinyinTool是一個工具類,其代碼如下:

package com.gc.testcontactpeopledemo;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import net.sourceforge.pinyin4j.PinyinHelper;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;/** *  * @author Android將軍 * */public class PinyinTool {public static HanyuPinyinOutputFormat format;public static List>> list;public static Map> map;public static Map pMap;public static List strList;/** *  功能:根據連絡人姓名產生拼音縮寫與拼字全寫 * @param strList 儲存連絡人姓名的List * @throws BadHanyuPinyinOutputFormatCombination */public static void setData(List strList) throws BadHanyuPinyinOutputFormatCombination{PinyinTool.strList=strList;format=new HanyuPinyinOutputFormat();format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);list=new ArrayList>>();for(int i=0;i>(); pMap=new HashMap(); pMap.put("simple", getSimple(strList.get(i))); pMap.put("complex", getComplex(strList.get(i))); map.put(strList.get(i), pMap); list.add(map);}}/** * 功能:擷取字串str的拼音縮寫 * @param str * @return */public static String getSimple(String str){StringBuilder sb=new StringBuilder();String tempSimple=null;for(int i=0;i search(String str){List temp=new ArrayList();for(int i=0;i下面再給出MainActivity的代碼,如下:
package com.gc.testcontactpeopledemo;import java.util.ArrayList;import java.util.List;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.text.Editable;import android.text.TextWatcher;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.EditText;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;/** *  * 功能:搜尋連絡人功能 * @author Android將軍 * */public class MainActivity extends Activity implements TextWatcher {private EditText mEditText;private ListView mListView;private PinyinHelper mPinyinHelper;private MyAdapter mMyAdapter;private List mList;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                setContentView(R.layout.activity_main);        setData();        initUI();        setListeners();            }    /**     * 初始化連絡人資料     */    public void setData()    {    mList=new ArrayList();    mList.add("安徽");    mList.add("王小二");    mList.add("Android將軍");    mList.add("天津大麻花");    mList.add("馬場道");    mList.add("海河灣");    mList.add("五大道");    mList.add("蘇州道");    mList.add("愛國道");    mList.add("天津圖書大廈");        }    /**     * 初始化組件     */    public void initUI()    {    mEditText=(EditText)findViewById(R.id.search);    mListView=(ListView)findViewById(R.id.listview);    mMyAdapter=new MyAdapter();    mListView.setAdapter(mMyAdapter);    try {PinyinTool.setData(mList);} catch (BadHanyuPinyinOutputFormatCombination e) {// TODO Auto-generated catch blocke.printStackTrace();}    }    /**     * 設定監聽     */    public void setListeners()    {    mEditText.addTextChangedListener(this);        }    /**     * EditText監聽事件,提供搜尋功能     */@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {for(int i=0;i

由於代碼比較簡單再加上有部分注釋,故在此就不做過多的解釋了,如果還有不明白處,回複留言即可。

轉載請註明出處:http://blog.csdn.net/android_jiangjun/article/details/40422251

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.