zoukankan      html  css  js  c++  java
  • Android EditText内容监听

     监听 EditText的内容变化,作出对应的处理。

    MainActivity.class

    package com.example.edittextdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.View.OnFocusChangeListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
        EditText edit_phone;
        Button btn_next;
        String okdata;
        TextView monitor_edit;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            EditText edit_Id = (EditText) findViewById(R.id.edit_Id);
            btn_next = (Button) findViewById(R.id.btn_next);
            monitor_edit = (TextView) findViewById(R.id.monitor_edit);
            btn_next.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    if (!isId(okdata)) {
                        monitor_edit.setText("请输入正确的身份证号!");
                    }
                }
            });
            // EditText焦点的监听
            edit_Id.setOnFocusChangeListener(new OnFocusChangeListener() {
    
                @Override
                public void onFocusChange(View v, boolean hasFocus) {
                    // 当hasFocus = true 是获取焦点
                    if (!hasFocus) {
                        if (!isId(okdata)) {
                            monitor_edit.setText("请输入正确的身份证号!");
                        }
                    }
                }
            });
            // 对EditText内容的实时监听
            edit_Id.addTextChangedListener(new TextWatcher() {
    
                // 第二个执行
                @Override
                public void onTextChanged(CharSequence s, int start, int before,int count) {
                    System.out.println("onTextChanged:" + "start:" + start + "before:" + before + "count:" + count);
                }
    
                // 第一个执行
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count,int after) {
                    System.out.println("beforeTextChanged:" + "start:" + start + "count:" + count + "after:" + after);
                }
    
                // 第三个执行
                @Override
                public void afterTextChanged(Editable s) { // Edittext中实时的内容
                    System.out.println("afterTextChanged:" + s);
                    okdata = s.toString();
                    if (isId(s.toString())) {
                        monitor_edit.setText("正确!");
                    }else {
                        monitor_edit.setText("请输入正确的身份证号!");
                    }
    
                }
            });
        }
    
        /**
         * 是否为身份证
         * 
         * @param idStr
         * @return
         */
        public static boolean isId(String idStr) {
            String regex = "^[0-9]{17}[0-9|xX]{1}$";
            if (idStr == null || "".equals(idStr.trim())) {
                return false;
            } else if (idStr.matches(regex)) {
                return true;
            }
    
            return false;
        }
    }

    activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <EditText
            android:id="@+id/edit_Id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@null"
            android:hint="输入身份证号" />
    
        <TextView
            android:id="@+id/monitor_edit"
            android:layout_width="match_parent"
            android:layout_height="20dp"
            android:textColor="#FF0000" />
    
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="19dp"
            android:background="@null"
            android:hint="输入姓名" />
    
        <Button
            android:id="@+id/btn_next"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="下一步(模仿)" />
    
    </LinearLayout>
  • 相关阅读:
    HDU 1863 畅通工程(Kruskal)
    HDU 1879 继续畅通工程(Kruskra)
    HDU 1102 Constructing Roads(Kruskal)
    POJ 3150 Cellular Automaton(矩阵快速幂)
    POJ 3070 Fibonacci(矩阵快速幂)
    ZOJ 1648 Circuit Board(计算几何)
    ZOJ 3498 Javabeans
    ZOJ 3490 String Successor(模拟)
    Java实现 LeetCode 749 隔离病毒(DFS嵌套)
    Java实现 LeetCode 749 隔离病毒(DFS嵌套)
  • 原文地址:https://www.cnblogs.com/yaxiaoke/p/5201239.html
Copyright © 2011-2022 走看看