【问题标题】:apply a search function to a list android将搜索功能应用于列表android
【发布时间】:2013-05-11 05:32:07
【问题描述】:

我在listview 中显示来自数据库的数据,现在我想通过提供的关键字从列表中搜索特定项目(忽略大小写)。我试过了,但没有得到预期的结果。按照我所做的代码,它没有给出错误,但也没有达到我的期望。请帮助更进一步。

ArrayList<String> bank=new ArrayList<String>();
EditText inputSearch;
inputSearch.addTextChangedListener(new TextWatcher() {

        private ArrayList<String> arrayList_sort = new ArrayList<String>();

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            // When user changed the Text
            int textlength=0;
            textlength=inputSearch.getText().length();
            if(arrayList_sort!=null)
                arrayList_sort.clear();
            for(int i=20;i<=bank.size();i++)
            {
                if(textlength<=bank.get(i).toString().length())
                {
                    //if(inputSearch.getText().toString().equalsIgnoreCase(String) bank.get(i).toString().subSequence(0, textlength)))
                    if (inputSearch
                            .getText()
                            .toString()
                            .equalsIgnoreCase(
                                    (String) bank.get(i).toString()
                                            .subSequence(0, textlength)))
                    {
                        arrayList_sort.add(bank.get(i));
                        Log.d("TAG", "log" + arrayList_sort.size());
                    }
                }
            }
        }
        public void beforeTextChanged(CharSequence cs, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }
        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub                          
        }
    });
} 

我使用了BaseAdapter。当 i=0 时,它会给出错误“IndexOutOfBound”。

【问题讨论】:

  • 你没有将 arrayList_sort 添加到你的列表视图中。你可以显示整个代码以便清楚吗?
  • 首先,你怎么能得到i ==0,你的for循环以i== 20开头,它的值不会递减。请发布正确的代码

标签: android android-listview android-search


【解决方案1】:

不要清除数组列表。保留它并搜索数据结构,而不是通过执行 getText() 并搜索视图来跳过 3000 圈。您的代码会更快更小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-04
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 2014-07-25
    相关资源
    最近更新 更多