android 将自动计算应用于编辑文本

r6vfmomb  于 2023-01-28  发布在  Android
关注(0)|答案(2)|浏览(129)

如果用户在编辑文本框中输入任何值(如1234),则编辑文本框中的所有值将相互相加,结果显示在文本框中。例如,如果用户在编辑文本中输入值(如1234),相加后(1+2+3+4=10),结果为10,结果显示在文本框中。

d7v8vwbk

d7v8vwbk1#

您可能会使用data binding,根据您想要的方式,可以使用一种或两种方式。
在开始成功实现之前,请务必阅读有关数据绑定的文档!
使用单向数据绑定,您可以为属性设置一个值,并设置一个侦听器来响应该属性的更改-androiddocs
首先在新的SumNumberTextView上设置绑定适配器,然后在父视图的布局文件中,如果您想使用更详细的单向数据绑定,请引用如下内容:
android:numbers="@{viewmodel.numbers}"android:onNumbersChanged="@{() => viewmodel.onNumbersChanged()}"
然后,您可以在视图模型上定义一个函数,每当您输入数字时,该函数就会执行您的数值运算。

ctehm74n

ctehm74n2#

你可以在edittext上使用textwatcher来更新文本的变化,并像这样做你的添加操作

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);
    }
}

相关问题