我有一个带有EditText和ListView的屏幕。当您键入EditText时,会启动AsyncTask(任何现有的AsyncTask被取消并被抛出)以在本地查询某些数据以显示在ListView中。如果EditText没有文本,则查询并显示所有数据。实质上,EditText是屏幕上数据的过滤器。这很容易做到。在addTextChangedListener中,只需取消之前的AsyncTask,启动一个新的AsyncTask,然后传递给它s.toString()。
当用户点击退格区以删除EditText中的某些文本时,我想要默认行为(所有数据都填充列表)。这适用于我当前的addTextChangedListener实现。
但是,我的EditText右侧也有一个X按钮。这是为了清除EditText(EditText.setText("");
)。这是一个特例。在这种情况下,我不希望查询发生。问题是,addTextChangedListener似乎不够聪明,不知道这一点。它被触发,因为文本已更改并且所有数据都被查询。
如何防止这种情况?
答案 0 :(得分:0)
使用boolean ignoreNextTextChangeKThxBye
数据成员,根据需要设置/清除boolean
并使用if()
语句以避免进行查询。