标题搜索功能需要调用接口的情况,连续输入会不停调用接口,可以用延迟任务来解决。
EditText editText = findViewById(R.id.editText);
final Handler handler = new Handler();
Runnable searchRunnable = null;
final long DELAY = 1000;
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (searchRunnable != null) {
handler.removeCallbacks(searchRunnable);
}
searchRunnable = new Runnable() {
@Override
public void run() {
performSearch(editText.getText().toString());
}
};
handler.postDelayed(searchRunnable, DELAY);
}
});
private void performSearch(String query) {
}
private var job: Job? = null
editText.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence? ,
start: Int ,
count: Int ,
after: Int) {
}
override fun onTextChanged(s CharSequence? ,
start: Int ,
before: Int ,
count: Int) {
if (job != null) {
job?.cancel()
}
job = CoroutineScope(Dispatchers.Main).launch {
delay(1000)
initData()
}
}
override fun afterTextChanged(s: Editable?) {
}
})