现在我正在使用edittext和listview在android中创建一个程序。我想使用上面的edittext搜索listview项目。在将数据填充到listview之后,当用户在edittext中键入文本时,listview将滚动到以该文本开头的位置。示例:我有项目:apple,application,book,boy,car,cat,cash .....当我在edittext中键入b时,listview将滚动到book。我使用listview.setSelection(position),但由于我的数据量超过30,000,因此当我使用以下代码时,查找数据的速度很慢。 有没有解决方案或任何其他方法来做到这一点? 这是我的代码:
YOUR_EDITTEXT.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
//LOGIC MAY DIFFER ACCORDING TO YOUR REQUIREMENT..
int POSITION = 0;
for(int i =0;i<list.size();i++) {
if(list.get(i).startsWith(s.toString()))
{
POSITION = i;
break;
}
}
listview.smoothScrollToPosition(POSITION);
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
});
答案 0 :(得分:1)
您可以采用不同的方法并使用AutoCompleteTextView加载列表数据。这将提供您所需的功能,并且它旨在处理大型数据集。
实施例: https://developers.google.com/places/training/autocomplete-android
答案 1 :(得分:0)
您的列表是否排序?如果是,则可以对数据源使用二进制排序。