editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// call function from here if you want to perform operation as user provide input
add(cs.toString());
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
Toast.makeText(getApplicationContext(),"before text change",Toast.LENGTH_LONG).show();
}
@Override
public void afterTextChanged(Editable arg0) {
// call function from here if you want to perform operation only user stop input
add(arg0.getText().toString());
}
});
private void add(String input){
if(input != null && input != ""){
String[] numbers = input.split("")
int total = 0;
for(int counter = 0 ; counter < numbers.length ; counter++){
total += Integer.parseInt(numbers[counter]);
}
Log.e("total",total);
}
}
2条答案
按热度按时间d7v8vwbk1#
您可能会使用data binding,根据您想要的方式,可以使用一种或两种方式。
在开始成功实现之前,请务必阅读有关数据绑定的文档!
使用单向数据绑定,您可以为属性设置一个值,并设置一个侦听器来响应该属性的更改-androiddocs
首先在新的SumNumberTextView上设置绑定适配器,然后在父视图的布局文件中,如果您想使用更详细的单向数据绑定,请引用如下内容:
android:numbers="@{viewmodel.numbers}"
和android:onNumbersChanged="@{() => viewmodel.onNumbersChanged()}"
然后,您可以在视图模型上定义一个函数,每当您输入数字时,该函数就会执行您的数值运算。
ctehm74n2#
你可以在edittext上使用textwatcher来更新文本的变化,并像这样做你的添加操作