Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android之開源類庫Pinyin4j的使用----搜索聯系人

Android之開源類庫Pinyin4j的使用----搜索聯系人

編輯:關於Android編程

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

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

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

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

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


\


接下來咱們看一下工程目錄:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGJyPgo8L3A+CjxwPjxpbWcgc3JjPQ=="/uploadfile/Collfiles/20141025/201410250856339.png" alt="\">

本案例總共就兩個類,其中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 block
			e.printStackTrace();
		}
    }
    /**
     * 設置監聽
     */
    public void setListeners()
    {
    	mEditText.addTextChangedListener(this);
    	
    }
    /**
     * EditText監聽事件,提供搜索功能
     */
	@Override
	public void beforeTextChanged(CharSequence s, int start, int count,
			int after) {
		for(int i=0;i

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

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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved