欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中使用 AutoCompleteTextView 實(shí)現(xiàn)手機(jī)號(hào)格式化附帶清空歷史的操作

 更新時(shí)間:2017年03月13日 09:34:00   作者:藍(lán)月羽  
有個(gè)小伙伴遇到了這樣一個(gè)問題,就是AutoCompleteTextView實(shí)現(xiàn)自動(dòng)填充的功能。同時(shí)要具備手機(jī)格式化的功能。接下來通過本文給大家分享使用 AutoCompleteTextView 實(shí)現(xiàn)手機(jī)號(hào)格式化附帶清空歷史的操作方法,需要的朋友參考下

有個(gè)小伙伴遇到了這樣一個(gè)問題,就是AutoCompleteTextView實(shí)現(xiàn)自動(dòng)填充的功能。同時(shí)要具備手機(jī)格式化的功能。下拉列表最后一行是有個(gè)清除歷史的功能??墒屈c(diǎn)擊“清除歷史”卻把文字要設(shè)置進(jìn)去AutoCompleteTextView中。這樣的效果顯然很糟糕。所以我就寫了這樣一個(gè)簡(jiǎn)單的demo。來幫助遇到這種問題的朋友解決這樣一個(gè)問題。二話不多說直接上代碼。

  布局文件(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);// 設(shè)置輸入一個(gè)字符就提示
  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);
}
/**
* 手機(jī)號(hào)格式化代碼
* 
* @param editText
* EditText對(duì)象
*/
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;
      // 手機(jī)號(hào)格式化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);
}
}
});
}
/**
* 判斷字符串是否是數(shù)字
* 
* @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 實(shí)現(xiàn)手機(jī)號(hào)格式化附帶清空歷史的操作,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android利用繪制緩沖實(shí)現(xiàn)代碼雨效果

    Android利用繪制緩沖實(shí)現(xiàn)代碼雨效果

    看過很多代碼雨的前端實(shí)現(xiàn),卻很少看到過Android代碼雨效果的實(shí)現(xiàn),當(dāng)然 open gl es的實(shí)現(xiàn)是有的,一個(gè)主要的原因是,在Android Canvas繪制時(shí),很少有人考慮使用繪制緩沖,所以本文將給大家介紹Android如何利用繪制緩沖實(shí)現(xiàn)代碼雨效果,需要的朋友可以參考下
    2024-03-03
  • Android自定義View繪制流程詳解

    Android自定義View繪制流程詳解

    這篇文章主要為大家介紹了Android自定義View繪制流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 完美解決android 項(xiàng)目jar包沖突的問題

    完美解決android 項(xiàng)目jar包沖突的問題

    這篇文章主要介紹了完美解決android 項(xiàng)目jar包沖突的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Android 錄制音視頻的完整代碼

    Android 錄制音視頻的完整代碼

    Android中,如果要錄制音頻的話有兩個(gè)選擇,一個(gè)是MediaRecorder,另一個(gè)就是AudioRecord,前者使用簡(jiǎn)單,后者就相對(duì)復(fù)雜點(diǎn),本文通過代碼給大家介紹Android 錄制音視頻的相關(guān)知識(shí),一起看看吧
    2021-06-06
  • Android ViewGroup事件分發(fā)和處理源碼分析

    Android ViewGroup事件分發(fā)和處理源碼分析

    這篇文章主要為大家介紹了Android ViewGroup事件分發(fā)和處理源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Android使用Toast顯示消息提示框

    Android使用Toast顯示消息提示框

    這篇文章主要為大家詳細(xì)介紹了Android使用Toast顯示消息提示框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android 滾動(dòng)時(shí)間選擇的示例代碼

    Android 滾動(dòng)時(shí)間選擇的示例代碼

    這篇文章主要介紹了Android 滾動(dòng)時(shí)間選擇的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Android開發(fā)基于Drawable實(shí)現(xiàn)圓角矩形的方法

    Android開發(fā)基于Drawable實(shí)現(xiàn)圓角矩形的方法

    這篇文章主要介紹了Android開發(fā)基于Drawable實(shí)現(xiàn)圓角矩形的方法,結(jié)合實(shí)例形式分析了Drawable的功能、相關(guān)圖形繪制函數(shù)與使用方法,需要的朋友可以參考下
    2017-10-10
  • Android開發(fā)之獲取LayoutInflater對(duì)象的方法總結(jié)

    Android開發(fā)之獲取LayoutInflater對(duì)象的方法總結(jié)

    這篇文章主要介紹了Android開發(fā)之獲取LayoutInflater對(duì)象的方法,結(jié)合實(shí)例形式總結(jié)分析了Android獲取LayoutInflater對(duì)象的常用技巧,需要的朋友可以參考下
    2016-02-02
  • Android?Activity共享元素動(dòng)畫示例解析

    Android?Activity共享元素動(dòng)畫示例解析

    這篇文章主要為大家介紹了Android?Activity共享元素動(dòng)畫示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論