大體思路就是,先寫出一個editext用來獲取文本內容,再寫出一個textview用來顯示我們同步生成的文本。
然後我們要調用系統的textWatcher的函數,然後會出現三個複習的子類:
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override public void afterTextChanged(Editable s) {
}這三個子類顯然能看出,分別是在輸入前,和輸入中的,和輸入後的函數,所以我們只需要在複寫出的
第三個函數中 寫上我們的有關算法的代碼即可,即:
@Override public void afterTextChanged(Editable s) { String result = "00"; String str = editText.getText().toString(); char[] b = new char[str.length()]; for (int i = 0; i < str.length(); i++) { b[i] = str.charAt(i); } for (int j = 0; j < b.length - 2; j++) { if (Integer.parseInt(""+b[j])==1&&Integer.parseInt(""+b[j+1])==1&&Integer.parseInt(""+b[j+2])==1){ result = result + "1"; } else { result = result + "0"; } } textView.setText(result); }這樣我們便能實現我們想要得到的功能。
//與此同時我們需要注意到的就是
String str = editText.getText().toString();//獲取editext的文本內容
Integer.parseInt(""+b[j])==1 //當要做判斷的時候應將數據類型統一
char[] b = new char[str.length()]; for (int i = 0; i < str.length(); i++) { b[i] = str.charAt(i); } //將一個string類型的數據一個一個的傳入到char[]b的數組之中,從而獲得一個數組類型
全部代碼如下:
Mainactivity:
package com.example.lin_sir.scanning; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.Menu; import android.view.MenuItem; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private EditText editText; private TextView textView; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.editText); textView = (TextView) findViewById(R.id.textview); editText.addTextChangedListener(textWatcher); } private TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { textView.setText("please input numbers"); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { String result = "00"; String str = editText.getText().toString(); char[] b = new char[str.length()]; for (int i = 0; i < str.length(); i++) { b[i] = str.charAt(i); } for (int j = 0; j < b.length - 2; j++) { if (Integer.parseInt(""+b[j])==1&&Integer.parseInt(""+b[j+1])==1&&Integer.parseInt(""+b[j+2])==1){ result = result + "1"; } else { result = result + "0"; } } textView.setText(result); } }; }