Android城市列表,首字母排序,右侧点击字母定位
生活随笔
收集整理的這篇文章主要介紹了
Android城市列表,首字母排序,右侧点击字母定位
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
效果圖:
自動定位(百度地圖)+列表選擇
思路:
1、請求到的城市列表,提取首字母
2、城市列表比較混亂,先使用實體類把相同首字母的城市放到一起
3、顯示城市列表
4、使用QuicLocationBar顯示右側(cè)字母欄
代碼:
0、QuickLocationBar右側(cè)字母插件
package com.xinyan.personal.ui.view;import android.app.Dialog; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.drawable.ColorDrawable; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.EditText; import android.widget.TextView;import com.xinyan.personal.R;/*** 定位城市右側(cè)選擇字母* Created by zst on 2017/8/23.*/ public class QuickLocationBar extends View {private String characters[] = { "#", "A", "B", "C", "D", "E", "F", "G","H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T","U", "V", "W", "X", "Y", "Z" };private int choose = -1;private Paint paint = new Paint();private OnTouchLetterChangedListener mOnTouchLetterChangedListener;private TextView mTextDialog;public QuickLocationBar(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// TODO Auto-generated constructor stub}public QuickLocationBar(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}public QuickLocationBar(Context context) {super(context);// TODO Auto-generated constructor stub}public void setOnTouchLitterChangedListener(OnTouchLetterChangedListener onTouchLetterChangedListener) {this.mOnTouchLetterChangedListener = onTouchLetterChangedListener;}public void setTextDialog(TextView dialog) {this.mTextDialog = dialog;}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);int width = getWidth();int height = getHeight();int singleHeight = height / characters.length;for (int i = 0; i < characters.length; i++) {// 對paint進(jìn)行相關(guān)的參數(shù)設(shè)置paint.setColor(getResources().getColor(R.color.font_feae1b));paint.setTypeface(Typeface.DEFAULT_BOLD);paint.setAntiAlias(true);paint.setTextSize(150*(float) width/320);if (i == choose) {// choose變量表示當(dāng)前顯示的字符位置,若沒有觸摸則為-1paint.setColor(getResources().getColor(R.color.bg_653fac));paint.setFakeBoldText(true);}// 計算字符的繪制的位置float xPos = width / 2 - paint.measureText(characters[i]) / 2;float yPos = singleHeight * i + singleHeight;// 在畫布上繪制字符canvas.drawText(characters[i], xPos, yPos, paint);paint.reset();// 每次繪制完成后不要忘記重制Paint}}@Overridepublic boolean dispatchTouchEvent(MotionEvent event) {int action = event.getAction();float y = event.getY();int c = (int) (y / getHeight() * characters.length);switch (action) {case MotionEvent.ACTION_UP:choose = -1;//setBackgroundColor(0x0000);invalidate();if (mTextDialog != null) {mTextDialog.setVisibility(View.GONE);}break;case MotionEvent.ACTION_DOWN:case MotionEvent.ACTION_MOVE://setBackgroundColor(getResources().getColor(R.color.bg_653fac));if (choose != c) {if (c >= 0 && c < characters.length) {if (mOnTouchLetterChangedListener != null) {mOnTouchLetterChangedListener.touchLetterChanged(characters[c]);}if (mTextDialog != null) {mTextDialog.setText(characters[c]);mTextDialog.setVisibility(View.VISIBLE);}choose = c;invalidate();}}break;}return true;}public interface OnTouchLetterChangedListener {public void touchLetterChanged(String s);}}?
1、調(diào)用代碼
?
package com.xinyan.personal.ui.activity;import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.hardware.SensorEvent; import android.hardware.SensorManager; import android.os.Build; import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RadioGroup; import android.widget.TextView; import android.widget.Toast;import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.xinyan.personal.R; import com.xinyan.personal.adapter.CityAdapter; import com.xinyan.personal.adapter.CityScarchAdapter; import com.xinyan.personal.httpManager.ServerMethodImp; import com.xinyan.personal.httpManager.net.CallBackListener; import com.xinyan.personal.httpManager.response.FundArealistResponse; import com.xinyan.personal.ui.view.QuickLocationBar; import com.xinyan.personal.util.UiUtil;import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map;/*** 公積金城市列表頁* Created by zst on 2017/8/23.*/ public class FundArealistActivity extends BaseActivity implements View.OnClickListener {public static final int INTENT_REQUEST_CODE = 100;//請求碼public static final int INTENT_RESULT_SUCC_CODE = 101;//請求碼正確public static final int INTENT_RESULT_ERR_CODE = 102;//請求碼錯誤public static final String INTENT_RESULT_CODE_VAULE = "intent_result_code_value";//返回值城市代碼public static final String INTENT_RESULT_NAME_VAULE = "intent_result_name_value";//返回值城市名稱private static final int BAIDU_ACCESS_FINE_LOCATION = 100;//定位申請?zhí)D(zhuǎn)private ListView mCityLit;private ListView city_list_search;private EditText et_search;private LinearLayout ll_city_search_list;private LinearLayout ll_location;private TextView tv_location_name;private CityAdapter adapter;private CityAdapter adapterSearch;private ImageView iv_back;private TextView overlay;private QuickLocationBar mQuicLocationBar;private List<FundArealistResponse.AreaModel> mCityNames;private List<FundArealistResponse.AreaModel> mCityNamesSearch;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_fund_area_list);iv_back = (ImageView) findViewById(R.id.iv_back);mQuicLocationBar = (QuickLocationBar) findViewById(R.id.city_loactionbar);mQuicLocationBar.setOnTouchLitterChangedListener(new LetterListViewListener());overlay = (TextView) findViewById(R.id.city_dialog);mCityLit = (ListView) findViewById(R.id.city_list);city_list_search = (ListView) findViewById(R.id.city_list_search);et_search = (EditText) findViewById(R.id.et_search);ll_city_search_list = (LinearLayout) findViewById(R.id.ll_city_search_list);ll_location = (LinearLayout) findViewById(R.id.ll_location);tv_location_name = (TextView) findViewById(R.id.tv_location_name);mQuicLocationBar.setTextDialog(overlay);iv_back.setOnClickListener(this);tv_location_name.setOnClickListener(this);//initList();requestPermission();//請求權(quán)限getCityList();listenerSearchEdit();initMapLocation();//定位相關(guān)}//搜索輸入監(jiān)聽private void listenerSearchEdit() {mCityNamesSearch = new ArrayList<>();adapterSearch = new CityAdapter(FundArealistActivity.this, mCityNamesSearch);city_list_search.setAdapter(adapterSearch);et_search.addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {// 輸入的內(nèi)容變化的監(jiān)聽}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {// 輸入前的監(jiān)聽}@Overridepublic void afterTextChanged(Editable s) {// 輸入后的監(jiān)聽if (TextUtils.isEmpty(et_search.getText().toString())) {ll_city_search_list.setVisibility(View.GONE);ll_location.setVisibility(View.VISIBLE);mCityLit.setVisibility(View.VISIBLE);mQuicLocationBar.setVisibility(View.VISIBLE);} else {ll_city_search_list.setVisibility(View.VISIBLE);ll_location.setVisibility(View.GONE);mCityLit.setVisibility(View.GONE);mQuicLocationBar.setVisibility(View.GONE);mCityNamesSearch.clear();for (int i = 0; i < mCityNames.size(); i++) {if (mCityNames.get(i).getCityName().contains(et_search.getText().toString())) {mCityNamesSearch.add(mCityNames.get(i));}}adapterSearch.notifyDataSetChanged();//UiUtil.showToast(FundArealistActivity.this, et_search.getText().toString());}}});}//ListView監(jiān)聽-字母快速選擇監(jiān)聽 // private class CityListOnItemClick implements AdapterView.OnItemClickListener { // @Override // public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { // FundArealistResponse.AreaModel cityModel = (FundArealistResponse.AreaModel) mCityLit.getAdapter().getItem(pos); // //Toast.makeText(FundArealistActivity.this, cityModel.getAreaCode(), Toast.LENGTH_SHORT).show(); // String areaCode = cityModel.getAreaCode(); // String cityName = cityModel.getCityName(); // if (TextUtils.isEmpty(areaCode)) { // setResult(INTENT_RESULT_ERR_CODE); // } else { // Intent intent = new Intent(); // intent.putExtra(INTENT_RESULT_CODE_VAULE, areaCode); // intent.putExtra(INTENT_RESULT_NAME_VAULE, cityName); // setResult(INTENT_RESULT_SUCC_CODE, intent); // } // finish(); // } // }public void setItemClick(FundArealistResponse.AreaModel cityModel) {String areaCode = cityModel.getAreaCode();String cityName = cityModel.getCityName();if (TextUtils.isEmpty(areaCode)) {setResult(INTENT_RESULT_ERR_CODE);} else {Intent intent = new Intent();intent.putExtra(INTENT_RESULT_CODE_VAULE, areaCode);intent.putExtra(INTENT_RESULT_NAME_VAULE, cityName);setResult(INTENT_RESULT_SUCC_CODE, intent);}finish();}private class LetterListViewListener implementsQuickLocationBar.OnTouchLetterChangedListener {@Overridepublic void touchLetterChanged(String s) {// TODO Auto-generated method stubMap<String, Integer> alphaIndexer = adapter.getCityMap();//Toast.makeText(FundArealistActivity.this, s + "。。" + alphaIndexer.get(s) + "..." + alphaIndexer.size(), Toast.LENGTH_SHORT).show();if (alphaIndexer.get(s) != null) {int position = alphaIndexer.get(s);mCityLit.setSelection(position);//Toast.makeText(FundArealistActivity.this, position + "", Toast.LENGTH_SHORT).show();}}}private void getCityList() {showProgressDialog();final Map<String, Object> map = new HashMap<>();ServerMethodImp.getInstance().fundArealist(this, map, new CallBackListener<FundArealistResponse>() {@Overridepublic void onSuccess(FundArealistResponse response) {if (response.isSuccess()) {mCityNames = response.getData();//把list按照首字母形同排序Collections.sort(mCityNames);adapter = new CityAdapter(FundArealistActivity.this, mCityNames);mCityLit.setAdapter(adapter);//mCityLit.setOnItemClickListener(new CityListOnItemClick());} else {showOneBtnCustomDialog(response.getMessage());}cancleProgressDialog();}@Overridepublic void onFailure(int code, String msg) {cancleProgressDialog();showOneBtnCustomDialog(msg);}});}@Overridepublic void onClick(View v) {int id = v.getId();switch (id) {case R.id.iv_back:finish();break;case R.id.tv_location_name:FundArealistResponse.AreaModel cityModel = null;String locationName = tv_location_name.getText().toString();for (int i = 0; i < mCityNames.size(); i++) {if (mCityNames.get(i).getCityName().contains(locationName)) {cityModel = mCityNames.get(i);break;}else if(locationName.contains(mCityNames.get(i).getCityName())) {cityModel = mCityNames.get(i);break;}}//UiUtil.showToast(FundArealistActivity.this, cityModel.getCityName());setItemClick(cityModel);break;}}//定位相關(guān):初始化定位private void initMapLocation() {// 定位初始化MyLocationListenner myListener = new MyLocationListenner();LocationClient mLocClient = new LocationClient(FundArealistActivity.this);mLocClient.registerLocationListener(myListener);LocationClientOption option = new LocationClientOption();option.setIsNeedAddress(true);option.setOpenGps(true); // 打開gpsoption.setCoorType("bd09ll"); // 設(shè)置坐標(biāo)類型option.setScanSpan(10000000);//自動定位間隔mLocClient.setLocOption(option);mLocClient.start();}/*** 定位相關(guān):定位SDK監(jiān)聽函數(shù)*/public class MyLocationListenner implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {//得到未知信息//得到城市String curCity = location.getCity();if (TextUtils.isEmpty(curCity)) {tv_location_name.setText("定位中...");} else {tv_location_name.setText(curCity);}}public void onReceivePoi(BDLocation poiLocation) {}}//申請地圖相關(guān)權(quán)限private void requestPermission() {if (Build.VERSION.SDK_INT >= 23) {ArrayList<String> permissions = new ArrayList<>();if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);}if (permissions.size() == 0) {return;} else {requestPermissions(permissions.toArray(new String[permissions.size()]), BAIDU_ACCESS_FINE_LOCATION);}}}//申請地圖相關(guān)權(quán)限:返回監(jiān)聽@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);switch (requestCode) {case BAIDU_ACCESS_FINE_LOCATION:if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {//允許initMapLocation();} else {//拒絕tv_location_name.setText("定位權(quán)限未開啟");}break;default:break;}} }activity_fund_area_list.xml
?
?
<?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"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="44dp"android:background="@color/bg_130b27"><ImageViewandroid:id="@+id/iv_back"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:src="@drawable/ic_back"/><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:padding="10dp"android:text="選擇城市"android:textColor="@color/white"android:textSize="18sp"/></RelativeLayout><FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_gravity="center"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:background="@color/white"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/ic_search"/><EditTextandroid:id="@+id/et_search"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"style="@android:style/Widget.TextView"android:textColorHint="@color/font_cccccc"android:textColor="@color/font_130b27"android:background="@null"android:hint="請輸入城市名"/></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:background="@color/line_dddddd"/><LinearLayoutandroid:id="@+id/ll_city_search_list"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"android:visibility="gone"><ListViewandroid:id="@+id/city_list_search"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center"android:divider="@color/bg_dddddd"android:dividerHeight="1dp"/><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:background="@color/line_dddddd"/></LinearLayout><LinearLayoutandroid:id="@+id/ll_location"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:textColor="@color/font_7c738c"android:text="您所在的城市"/><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:background="@color/line_dddddd"/><TextViewandroid:id="@+id/tv_location_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:textColor="@color/font_130b27"android:background="@color/white"android:text="正在定位..."/><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:background="@color/line_dddddd"/></LinearLayout><ListViewandroid:id="@+id/city_list"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center"android:divider="@color/bg_dddddd"android:dividerHeight="1dp"/></LinearLayout><TextViewandroid:id="@+id/city_dialog"android:layout_width="80.0dip"android:layout_height="80.0dip"android:layout_gravity="center"android:gravity="center"android:textColor="@color/bg_feae1b"android:textSize="30.0sp"android:visibility="gone"/><com.xinyan.personal.ui.view.QuickLocationBarandroid:id="@+id/city_loactionbar"android:layout_width="30.0dip"android:layout_height="fill_parent"android:layout_gravity="right|center"android:paddingBottom="2dp"/></FrameLayout></LinearLayout> ??
2、FundArealistResponse實體類
?
package com.xinyan.personal.httpManager.response;import com.xinyan.personal.util.DigitUtil;import java.util.List;/*** 公積金支持城市* Created by zst on 2017/8/24.*/ public class FundArealistResponse extends BaseResponse {private List<AreaModel> data;public List<AreaModel> getData() {return data;}public void setData(List<AreaModel> data) {this.data = data;}public class AreaModel implements Comparable {private String areaCode;private String cityName;public String getAreaCode() {return areaCode;}public void setAreaCode(String areaCode) {this.areaCode = areaCode;}public String getCityName() {return cityName;}public void setCityName(String cityName) {this.cityName = cityName;}@Overridepublic int compareTo(Object o) {AreaModel areaModel = (AreaModel) o;return DigitUtil.getPinYinFirst(this.getCityName()).compareTo(DigitUtil.getPinYinFirst(areaModel.getCityName()));}} } ?3、CityAdapter適配器
?
?
package com.xinyan.personal.adapter;import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.RelativeLayout; import android.widget.TextView;import com.xinyan.personal.R; import com.xinyan.personal.httpManager.response.FundArealistResponse; import com.xinyan.personal.ui.activity.FundArealistActivity; import com.xinyan.personal.util.DigitUtil;import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map;/*** 城市配器* Created by zst on 2017/8/2.*/public class CityAdapter extends BaseAdapter {private LayoutInflater inflater;private List<FundArealistResponse.AreaModel> list;private Map<String, Integer> alphaIndexer;private String[] sections;private Context context;public CityAdapter(Context context, List<FundArealistResponse.AreaModel> list) {//賦值初始化this.context = context;this.inflater = LayoutInflater.from(context);this.list = list;alphaIndexer = new HashMap<String, Integer>();sections = new String[list.size()];//把相鄰的相同的首字母放到一起,同時首個字母顯示for (int i = 0; i < list.size(); i++) {String currentStr = DigitUtil.getPinYinFirst(list.get(i).getCityName());String previewStr = (i - 1) >= 0 ? DigitUtil.getPinYinFirst(list.get(i - 1).getCityName()): " ";if (!previewStr.equals(currentStr)) {//前一個首字母與當(dāng)前首字母不同時加入HashMap中同時顯示該字母String name = DigitUtil.getPinYinFirst(list.get(i).getCityName());alphaIndexer.put(name, i);sections[i] = name;}}}public Map<String, Integer> getCityMap() {return alphaIndexer;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {ViewHolder holder;if (convertView == null) {convertView = inflater.inflate(R.layout.item_city, null);holder = new ViewHolder();holder.alpha = (TextView) convertView.findViewById(R.id.item_city_alpha);holder.name = (TextView) convertView.findViewById(R.id.item_city_name);holder.rl_item = (RelativeLayout) convertView.findViewById(R.id.rl_item);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.name.setText(list.get(position).getCityName());String currentStr = DigitUtil.getPinYinFirst(list.get(position).getCityName());String previewStr = (position - 1) >= 0 ? DigitUtil.getPinYinFirst(list.get(position - 1).getCityName()) : " ";if (!previewStr.equals(currentStr)) {holder.alpha.setVisibility(View.VISIBLE);holder.alpha.setText(currentStr);} else {holder.alpha.setVisibility(View.GONE);}holder.rl_item.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {((FundArealistActivity)context).setItemClick(list.get(position));}});return convertView;}private class ViewHolder {RelativeLayout rl_item;TextView alpha;TextView name;} }?
item_city.xml
?
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/rl_item"><TextViewandroid:id="@+id/item_city_alpha"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="@color/bg_efeff4"android:padding="10dp"android:textColor="@color/font_7c738c"/><TextViewandroid:id="@+id/item_city_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/item_city_alpha"android:padding="10dp"android:singleLine="true"android:text="name"android:textColor="@color/font_130b27"/> </RelativeLayout>4、漢字轉(zhuǎn)拼音、返回拼音大寫工具類;
其中漢字轉(zhuǎn)拼音必須下載jar包:下載
package com.mandaotech.ewallet.android.util;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;/*** 數(shù)字和文字處理* Created by zst on 2017/6/28.*/public class DigitUtil {/*** 手機(jī)號中間四位隱藏* @param phone*/public static String phoneHide(String phone) {String phoneHide = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");return phoneHide;}/*** 身份證中間8位隱藏* 隱藏出生年月* @param idCard*/public static String idCardHide(String idCard) {String idCardHide = idCard.replaceAll("(\\d{6})\\d{8}(\\w{4})","$1*****$2");return idCardHide;}/*** 漢子轉(zhuǎn)拼音* @param src* @return*/public static String getPinYin(String src) {char[] t1 = null;t1 = src.toCharArray();// System.out.println(t1.length);String[] t2 = new String[t1.length];// System.out.println(t2.length);// 設(shè)置漢字拼音輸出的格式HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);t3.setVCharType(HanyuPinyinVCharType.WITH_V);String t4 = "";int t0 = t1.length;try {for (int i =0; i < t0; i++) {// 判斷能否為漢字字符// System.out.println(t1[i]);if (Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);// 將漢字的幾種全拼都存到t2數(shù)組中t4 += t2[0]+" ";// 取出該漢字全拼的第一種讀音并連接到字符串t4后} else {// 如果不是漢字字符,間接取出字符并連接到字符串t4后t4 += Character.toString(t1[i]);}}} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}return t4;}/*** 返回拼音首字母大寫* @param str* @return*/public static String getPinYinFirst(String str) {String pinyin = getPinYin(str);return pinyin.substring(0,1).toUpperCase();} } ??
?
總結(jié)
以上是生活随笔為你收集整理的Android城市列表,首字母排序,右侧点击字母定位的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android PopupWindow
- 下一篇: 令人惊叹的8个深度学习应用「我去,这也能