약 TextWatcher
에 대해 조금 알고 있지만 입력 한 모든 문자가 실행됩니다. 사용자가 편집을 마칠 때마다 발생하는 리스너를 원합니다. 가능한가? 또한 TextWatcher
에서 나는 Editable
의 인스턴스를 얻지 만 인스턴스는 EditText
이어야합니다. 어떻게해야합니까?android edittext onchange listener
편집 : 두 번째 질문이 더 중요합니다. 대답 해주세요.
약 TextWatcher
에 대해 조금 알고 있지만 입력 한 모든 문자가 실행됩니다. 사용자가 편집을 마칠 때마다 발생하는 리스너를 원합니다. 가능한가? 또한 TextWatcher
에서 나는 Editable
의 인스턴스를 얻지 만 인스턴스는 EditText
이어야합니다. 어떻게해야합니까?android edittext onchange listener
편집 : 두 번째 질문이 더 중요합니다. 대답 해주세요.
먼저 EditText
이 포커스를 잃었거나 사용자가 완료 버튼을 누르면 텍스트 편집을 완료했는지 확인할 수 있습니다 (구현 및 사용자에게 가장 적합한 방식에 따라 다름). 두 번째로 EditText
을 인스턴스 객체로 선언 한 경우에만 텍스트 워처 내에 EditText
인스턴스를 가져올 수 없습니다. 비록 그것이 안전하지 않기 때문에 textwatcher
내의 EditText
을 편집하면 안됩니다.
편집 : 위의 샘플은 약간의 오차가있을 수 있지만, 난 그냥 싶다고
public class YourClass extends Activity {
private EditText yourEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
yourEditText = (EditText) findViewById(R.id.yourEditTextId);
yourEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
// you can call or do what you want with your EditText here
yourEditText. ...
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
}
}
참고 :
당신이 이런 식으로 뭔가를 시도해야 당신의 TextWatcher 구현에 글고 인스턴스를 얻을 수있을하려면 예를 보여주세요.
내가 생각할 수있는 한 두 가지 방법 만 있습니다. 사용자가 단어 작성을 마쳤다는 것을 어떻게 알 수 있습니까? 초점을 잃었거나 "확인"버튼을 클릭하십시오. 사용자가 마지막 문자를 눌렀다는 것을 알 수있는 방법이 없습니다 ...
그래서 onFocusChange(View v, boolean hasFocus)
을 호출하거나 단추와 클릭 수신기를 추가하십시오.
TextWatcher
은 모두 EditText
에 대해 계속 발사하고 서로 값을 어지럽히면서 계속 작동하지 않았습니다.
public class ConsultantTSView extends Activity {
.....
//Submit is called when I push submit button.
//I wanted to retrieve all EditText(tsHours) values in my HoursList
public void submit(View view){
ListView TSDateListView = (ListView) findViewById(R.id.hoursList);
String value = ((EditText) TSDateListView.getChildAt(0).findViewById(R.id.tsHours)).getText().toString();
}
}
따라서 getChildAt(xx)
방법을 사용하여 당신이 ListView
의 모든 항목을 검색하고 findViewById
를 사용하여 개별 항목을 얻을 수 있습니다 :
여기 내 솔루션입니다. 그런 다음 가장 최근의 가치를 부여합니다. 내가 AutotextView
를 사용했을
:
AutotextView textView = (AutotextView) findViewById(R.id.autotextview);
textView.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
seq = cs;
}
@Override
public void beforeTextChanged(CharSequence s, int arg1, int arg2, int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
new SearchTask().execute(seq.toString().trim());
}
});
ButterKnife를 사용하는 사람. 그것은 나를 귀찮게했다
@OnTextChanged(R.id.zip_code)
void onZipCodeTextChanged(CharSequence zipCode, int start, int count, int after) {
}
내 글고 필드의 모든 리스너를 구현하는 그래서 아래의 클래스를 쓴 저 못생긴, 자세한 코드를 가지고 있어야한다는 :처럼 당신은 사용할 수 있습니다. 이 문제에 걸림돌이되는 사람에게 유용 할 수 있습니다.
public abstract class TextChangedListener<T> implements TextWatcher {
private T target;
public TextChangedListener(T target) {
this.target = target;
}
@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) {
this.onTextChanged(target, s);
}
public abstract void onTextChanged(T target, Editable s);
}
이제 청취자를 구현하는 것이 조금 깔끔합니다.EDITTEXT 초점을 때
editText.addTextChangedListener(new TextChangedListener<EditText>(editText) {
@Override
public void onTextChanged(EditText target, Editable s) {
//Do stuff
}
});
는 화재 빈도에 관해서는, 하나는 아마도, 포커스 청취자를 추가하는
myTextBox.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {
TextView myOutputBox = (TextView) findViewById(R.id.myOutputBox);
myOutputBox.setText(s);
}
});
마지막에 불필요한}} – Howard
시도 주어진 후
//Do stuff
자신의 원하는 코드를 실행하기 위해 수표를 구현할 수 즉, 사용자가 편집을 시작했음을 의미하고 editText가 포커스를 잃으면 편집이 완료되었음을 의미합니다. – Houcinehttps://github.com/henrychuangtw/AutoInsertEditText – HenryChuang