国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中使用 AutoCompleteTextView 實現手機號格式化附帶清空歷史的操作

2019-12-12 03:23:53
字體:
來源:轉載
供稿:網友

有個小伙伴遇到了這樣一個問題,就是AutoCompleteTextView實現自動填充的功能。同時要具備手機格式化的功能。下拉列表最后一行是有個清除歷史的功能。可是點擊“清除歷史”卻把文字要設置進去AutoCompleteTextView中。這樣的效果顯然很糟糕。所以我就寫了這樣一個簡單的demo。來幫助遇到這種問題的朋友解決這樣一個問題。二話不多說直接上代碼。

  布局文件(activity_main.xml)代碼如下: 

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >  <TextView    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="Please input:" />  <AutoCompleteTextView    android:id="@+id/actv"    android:layout_width="fill_parent"    android:layout_height="wrap_content" />  </LinearLayout>

  java文件(MainActivity.java)代碼如下:

import android.app.Activity;import android.os.Bundle;import android.text.Editable;import android.text.Selection;import android.text.TextWatcher;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.AutoCompleteTextView;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {private AutoCompleteTextView mAutoCompleteTextView;private String[] mAutoStrs = new String[] { "138 0013 8000", "13800138001",        "13800138002", "13800138003", "13800138004", "138 0013 800清除記錄" };private String mBeforeTextChangedStr = "";public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  mAutoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.actv);  ArrayAdapter<String> _arrayAdapter = new ArrayAdapter<String>(this,                android.R.layout.simple_dropdown_item_1line, mAutoStrs);  mAutoCompleteTextView.setAdapter(_arrayAdapter);  mAutoCompleteTextView.setThreshold(1);// 設置輸入一個字符就提示  mAutoCompleteTextView.setOnItemClickListener(new OnItemClickListener() {     @Override     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,               long arg3) {        String _clearStr = "";        if (arg1 instanceof TextView) {          _clearStr = ((TextView) arg1).getText().toString();         }        if (_clearStr.equals("138 0013 800清楚記錄")) {          mAutoCompleteTextView.setText(mBeforeTextChangedStr);          Editable _editable = mAutoCompleteTextView.getText();          Selection.setSelection(_editable, _editable.length());          Toast.makeText(MainActivity.this, "清除成功了!",          Toast.LENGTH_LONG).show();        }    }  });  phoneNumAddSpaceOne(mAutoCompleteTextView);}/*** 手機號格式化代碼* * @param editText* EditText對象*/public void phoneNumAddSpaceOne(final EditText editText) {  editText.addTextChangedListener(new TextWatcher() {    private int start;    private int before;    private StringBuilder stringBuilder;    @Override    public void onTextChanged(CharSequence s, int start, int before,                 int count) {      this.start = start;      this.before = before;    }    @Override    public void beforeTextChanged(CharSequence s, int start, int count,      int after) {    }    @Override    public void afterTextChanged(Editable s) {      String _str = s.toString();      if (!isNumeric(_str.replace(" ", ""))) {        return;      }      mBeforeTextChangedStr = _str;      // 手機號格式化xxx xxxx xxxx      if (s == null || s.length() == 0)        return;      if (stringBuilder == null) {        stringBuilder = new StringBuilder();      } else {        stringBuilder.delete(0, stringBuilder.length());      }      for (int i = 0; i < s.length(); i++) {      if (i != 3 && i != 8 && s.charAt(i) == ' ') {        continue;      } else {        stringBuilder.append(s.charAt(i));      if ((stringBuilder.length() == 4 || stringBuilder        .length() == 9)&& stringBuilder.charAt(stringBuilder.length() - 1) != ' ') {      stringBuilder.insert(stringBuilder.length() - 1,' ');      }    }  }  if (!stringBuilder.toString().equals(s.toString())) {    int index = start + 1;   if (stringBuilder.charAt(start) == ' ') {  if (before == 0) {    index++;  } else {    index--;  }} else {  if (before == 1) {    index--;  }}  editText.setText(stringBuilder.toString());  editText.setSelection(index);}}});}/*** 判斷字符串是否是數字* * @param str* 需要判斷的字符串* @return*/public boolean isNumeric(String str) {  for (int i = str.length(); --i >= 0;) {    int chr = str.charAt(i);    if (chr < 48 || chr > 57)    return false;    }    return true;  }}

以上所述是小編給大家介紹的Android中使用 AutoCompleteTextView 實現手機號格式化附帶清空歷史的操作,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武定县| 昆山市| 抚松县| 新巴尔虎左旗| 兴业县| 游戏| 棋牌| 宜君县| 丹寨县| 屏南县| 乐业县| 广汉市| 宁德市| 宁夏| 沾化县| 卓尼县| 乐东| 浪卡子县| 乐昌市| 当雄县| 湟源县| 福安市| 宁陵县| 宿迁市| 屯留县| 洛浦县| 黑水县| 海城市| 东至县| 星座| 聂荣县| 项城市| 贵州省| 嘉荫县| 锡林浩特市| 门源| 自贡市| 葫芦岛市| 泗洪县| 绍兴市| 衡水市|