我有一个带有 EditText 和 ListView 的屏幕。当您在 EditText 中键入内容时,将启动一个 AsyncTask(任何现有的 AsyncTask 都将被取消并丢弃)以在本地查询某些数据以显示在 ListView 中。如果 EditText 没有文本,则查询并显示所有数据。本质上,EditText 是屏幕上数据的过滤器。这很容易做到。在 addTextChangedListener 中,只需取消之前的 AsyncTask,启动一个新任务,然后将 s.toString() 传递给它。
当用户按退格键删除 EditText 中的某些文本时,我想要默认行为(所有数据都填充列表)。这适用于我当前的 addTextChangedListener 实现。
但是,我的 EditText 右侧还有一个 X 按钮。这是为了清除 EditText ( EditText.setText("");
)。这是一个特例。在这种情况下,我不希望查询发生。问题是,addTextChangedListener 似乎不够聪明,无法知道这一点。它被触发是因为文本已更改并且查询了所有数据。
我该如何防止这种情况?