des*_*mad 10 android textwatcher android-listview android-edittext
我有一个EditText过滤ListView下面的项目,通常可能包含超过1000个项目.该TextWatcher方法是:
txt_itemSearch.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
fillItemList();
}
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
});
Run Code Online (Sandbox Code Playgroud)
这里的问题是,对于用户键入的每个字母,列表都会刷新,这是重复列表更新,导致UI变慢.
如何TextWatcher等待1-2秒,如果2秒后没有更多输入,则过滤列表.有什么建议吗?
Luk*_*rog 17
如何让textWatcher等待1-2秒,如果2秒后没有更多输入,则过滤列表.
正如我在评论中已经说过的那样,您应该考虑使用getFilter()适配器的方法.因为这可能不合适(如你所说)尝试实现适配器的过滤器用于在过滤器输入之间取消的相同机制.
private Handler mHandler = new Handler();
public void afterTextChanged(Editable s) {
mHandler.removeCallbacks(mFilterTask);
mHandler.postDelayed(mFilterTask, 2000);
}
Run Code Online (Sandbox Code Playgroud)
在哪里filterTask:
Runnable mFilterTask = new Runnable() {
@Override
public void run() {
fillItemList();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3536 次 |
| 最近记录: |