Android Listview搜索到特定位置

时间:2014-01-24 03:13:15

标签: android database android-listview filter

现在我正在使用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

}

});

2 个答案:

答案 0 :(得分:1)

您可以采用不同的方法并使用AutoCompleteTextView加载列表数据。这将提供您所需的功能,并且它旨在处理大型数据集。

实施例: https://developers.google.com/places/training/autocomplete-android

答案 1 :(得分:0)

您的列表是否排序?如果是,则可以对数据源使用二进制排序。