zoukankan      html  css  js  c++  java
  • 监听EditText的变化

    http://liangruijun.blog.51cto.com/3061169/729505

    之前博客上的有关EditText的文章,只是介绍EditText的一些最基本的用法,这次来深入学习一下EditText。

    监听EditText的变化

    使用EditText的addTextChangedListener(TextWatcher watcher)方法对EditText实现监听,TextWatcher是一个接口类,所以必须实现TextWatcher里的抽象方法:

     当EditText里面的内容有变化的时候,触发TextChangedListener事件,就会调用TextWatcher里面的抽象方法。

    MainActivity.java

        package com.lingdududu.watcher;  
         
        import android.app.Activity;  
        import android.app.AlertDialog;  
        import android.content.DialogInterface;  
        import android.os.Bundle;  
        import android.text.Editable;  
        import android.text.TextWatcher;  
        import android.util.Log;  
        import android.widget.EditText;  
         
        public class MainActivity extends Activity {  
            private EditText text;  
            String str;  
            @Override 
            public void onCreate(Bundle savedInstanceState) {  
                super.onCreate(savedInstanceState);  
                setContentView(R.layout.main);  
                  
                text = (EditText)findViewById(R.id.text);  
                text.addTextChangedListener(textWatcher);  
            }  
              
            private TextWatcher textWatcher = new TextWatcher() {  
                  
                @Override    
                public void afterTextChanged(Editable s) {     
                    // TODO Auto-generated method stub     
                    Log.d("TAG","afterTextChanged--------------->");   
                }   
                  
                @Override 
                public void beforeTextChanged(CharSequence s, int start, int count,  
                        int after) {  
                    // TODO Auto-generated method stub  
                    Log.d("TAG","beforeTextChanged--------------->");  
                }  
         
                 @Override    
                public void onTextChanged(CharSequence s, int start, int before,     
                        int count) {     
                    Log.d("TAG","onTextChanged--------------->");    
                    str = text.getText().toString();  
                    try {  
                        //if ((heighText.getText().toString())!=null)   
                        Integer.parseInt(str);  
                          
                    } catch (Exception e) {  
                        // TODO: handle exception  
                        showDialog();  
                    }  
                                      
                }                    
            };  
         
            private void showDialog(){  
                AlertDialog dialog;  
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);  
                builder.setTitle("消息").setIcon(android.R.drawable.stat_notify_error);  
                builder.setMessage("你输出的整型数字有误,请改正");  
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){  
                    @Override 
                    public void onClick(DialogInterface dialog, int which) {  
                        // TODO Auto-generated method stub  
                          
                    }                     
                });  
                dialog = builder.create();  
                dialog.show();  
            }  
        } 
    

     main.xml

        <?xml version="1.0" encoding="utf-8"?> 
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
            android:orientation="vertical" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent" 
            > 
        <TextView    
            android:layout_width="fill_parent"   
            android:layout_height="wrap_content"   
            android:text="请输入整型数字" 
            /> 
        <EditText   
            android:id="@+id/text" 
            android:layout_width="fill_parent"   
            android:layout_height="wrap_content"   
            /> 
        </LinearLayout> 
    

     效果图:

    当我们在输入框输入不是整型数字的时候,会立刻弹出输入框,提示你改正

    在LogCat查看调用这些方法的顺序:

    beforeTextChanged-->onTextChanged-->onTextChanged

    第二个例子实现了提示文本框还能输入多少个字符的功能

        package com.lingdududu.test;  
         
        import android.app.Activity;  
        import android.os.Bundle;  
        import android.text.Editable;  
        import android.text.TextWatcher;  
        import android.view.View;  
        import android.widget.Button;  
        import android.widget.EditText;  
        import android.widget.TextView;  
         
        public class MainActivity extends Activity {  
         private Button clearBtn;  
         private EditText et;  
         private TextView tv;  
         final int MAX_LENGTH = 20;  
         int Rest_Length = MAX_LENGTH;  
            @Override 
            public void onCreate(Bundle savedInstanceState) {  
                super.onCreate(savedInstanceState);  
                setContentView(R.layout.main);  
                tv =(TextView)findViewById(R.id.tv);  
                et = (EditText)findViewById(R.id.et);  
                  
                clearBtn = (Button)findViewById(R.id.btn);  
         
                et.addTextChangedListener(new TextWatcher() {  
                                  
                    @Override 
                    public void beforeTextChanged(CharSequence s, int start, int count,  
                            int after) {  
                        tv.setText("还能输入"+Rest_Length+"个字");              
                    }  
                                  
                    @Override 
                    public void afterTextChanged(Editable s) {  
                        tv.setText("还能输入"+Rest_Length+"个字");  
                    }  
                      
                    @Override 
                    public void onTextChanged(CharSequence s, int start, int before, int count) {  
                        if(Rest_Length>0){  
                            Rest_Length = MAX_LENGTH - et.getText().length();  
                        }  
                    }             
                });  
                
                clearBtn.setOnClickListener(new Button.OnClickListener() {        
                    @Override 
                    public void onClick(View v) {  
                        et.setText("");  
                        Rest_Length = MAX_LENGTH;  
                    }  
                });  
            }  
         } 
    

    效果图:

    本文出自 “IT的点点滴滴” 博客,请务必保留此出处http://liangruijun.blog.51cto.com/3061169/729505

  • 相关阅读:
    PHP 大小写转换、首字母大写、每个单词首字母大写转换相关函数
    【论文学习4】BiSample: Bidirectional Sampling for Handling Missing Data with Local Differential Privacy
    【论文学习3】Local Differential Privacy for Deep Learning
    【论文学习2】 Differential Privacy Reinforcement Learning
    深度学习中的优化算法
    Spatial crowdsourcing
    “pip install tensorflow ”出现错误
    python或pip'不是内部或外部命令”
    pip install torch出现错误
    打不开gitHub的解决方法
  • 原文地址:https://www.cnblogs.com/misybing/p/5018673.html
Copyright © 2011-2022 走看看