Java 在不落后的情况下进行更好的搜索
因此,我有一个edditbox,它在data.txt中搜索stopname,并使用我的自定义适配器将其显示到listview,因此每次我输入一个单词时,它都会过滤结果 我的问题是,当我再次输入一个单词时,它会有一点滞后,因为我认为它会过滤所有结果。 我的问题是,我如何才能使它不滞后我知道我有没有办法在后台过滤数据 PS.my data.txt是一个非常大的数据集合,比如说100mb的停止名称数据Java 在不落后的情况下进行更好的搜索,java,android,search,Java,Android,Search,因此,我有一个edditbox,它在data.txt中搜索stopname,并使用我的自定义适配器将其显示到listview,因此每次我输入一个单词时,它都会过滤结果 我的问题是,当我再次输入一个单词时,它会有一点滞后,因为我认为它会过滤所有结果。 我的问题是,我如何才能使它不滞后我知道我有没有办法在后台过滤数据 PS.my data.txt是一个非常大的数据集合,比如说100mb的停止名称数据 searchEditText2.addTextChangedListener(new TextWat
searchEditText2.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
}
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2,
int arg3) {
customAdapter.getFilter().filter(cs);
}
});
我建议您先显示一些特定的单词,然后可能会在滚动显示下一个搜索结果,甚至在加载更多按钮上单击显示更多记录。一次显示如此庞大的数据可能是不正确的。考虑到不同的android设备和处理器速度,一些设备可能根本没有响应。我建议您先显示一些特定的单词,然后滚动显示下一个搜索结果,甚至在加载更多按钮上单击显示更多记录。一次显示如此庞大的数据可能是不正确的。考虑到不同的android设备以及处理器的速度,一些设备可能根本没有响应。由于您需要搜索一个巨大的文件,并且将其全部放入堆内存太危险(可能会导致OOM),因此您可以采取下一步措施使事情变得更好:
无论您选择哪一种,请记住,与成熟的PC相比,它仍然是一个低规格的设备,因此请小心RAM的使用,否则您将在某些设备上获得OOM。因为您需要搜索一个巨大的文件,并且将其全部放入堆内存太危险(可能会获得OOM),你可以做下一件事来让事情变得更好: