前语

​ 没有前语的文章总感觉少了什么,该文章朴实为了备份。

简介

​ 多个输入框一同操控一个按钮控件的情况,为前进代码质量和代码的内聚程度,辅佐东西油然而生。该东西的完结参看了android的drawable类一位博主的android系统文章,文章联接找不到了,那就某某博主吧。再多的简介还不如一个效果图:

效果图

只输入一个时,按钮 enablandroid/yunose = false

Android-辅佐工具-输入框操控控件状况

只需输入框都有内容时,按钮 enable = true

Android-辅佐工具-输入框操控控件状况

使用办法

javascript了避免EditText调用addTextChangedListener()而未刊出监听导致内存走漏,辅佐东西中增加了毁掉的办法,在onDestroy中调用removeViews()办法进行移除监听。

1、首要声明政策

/**
* 按钮款式javascript操控东西
*/
Text源码网站I实例化数组nputUtils nextHelper;

2、实例化政策

btnNext是被操控的控件

nextHelper = new TextInputUtandroid手机ils(btnNext);

3、增加操控控件

addViews(TextView… view)办法,参数为可变长度参数列表。当参数内的一切控件都满意条件时,被操控的源码控件的 enable = true.

nextHelper.addViews(etNumber, etCode);

4、开释控件

nextHelper.rem源码集市oveViews();

源码在此

pandroid/yunosackage com.momin.baselib.util;
import android.text.EditabAndroidle;
import andro实例化数组id.text.TextWatcher;
im源码集市port android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**java模拟器
* <p>Title: EditTextInputHelper</p>
* <p>Description:实例化数组 编辑框输入监听操控</p>
* <p>Copyright: </p>
* <p>Company: </p>
*
* @authorandroid下载安装 Momin
* @ver实例化英文sion 1.0
* @date 2020/9/25 16:03
*/
public class TextInputUtils implemejava环境变量装备nts TextWatcjava模拟器her {
/**
* 被操作政策
*/
private View targetView;
/**
* 监听集结
*/
private List<TextView> viewSet;
public TextInputUtils(View view) {
if (view == nulandroid系统l) {
throw new IllegalArgumentException("The view is empty");
}
this.targetView = view;
}
/**
* 增加 EditText 监听
* @param views 传入单个或多个 TextView / EditText 政策
*/
public voidandroid的drawable类 addViews(TextView... views) {
if (views == null) {
return;
}
if (viewSet == null) {
viewSet = new ArrayList<>(views.length - 1);
}
for (TextView view : views) {
view.addTextChangedListener(this);
viewSet.add(view);
}
afterTextChanged(null);
}
/**
* 移除 TextWatcher 监听,避免内存泄漏
*/
public void removeVieandroid平板电脑价格ws() {
if (viewSet == null) {
return;
}
for (TextView实例化类 vieandroid下载安装w : viewSet) {
view.removeTextChangedListener(this);
}
viewSet.clear();
viewSet = null;
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTeandroid手机x源码网站tChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (viewSet == null) {
return;
}
forjava面试题 (TextView view : viewSet) {
if ("".equals(实例化需求vjava根本数据类型iew.getT源码集市ext().toString())) {
setEnabled(fals实例化数组e);
return;
}
}
setEnabled(t实例化类rue);
}
/**
* 设置View的作业
* @param enabled 启用或许禁用View的作业
*/
public源码编辑器手机版下载 void setEnabled(boolean enabled) {
if实例化类 (enabled == t实例化目标的关键字argetView.isEnabled()) {
return;
}
if (enabled) {
//启用View的作业
targetView.setEnabled(true);
}else {
/实例化需求/禁用View的作业
targetView.sjavascriptetEnabled(javaeefalse);
}
}
}