2

こんにちは、ユーザーが入力した場合、リストビューでフィルタリングが自動的に行われる必要があるという編集ボックスが1つあります...

以下のコードから、すべて正常に動作していますが、文字にスペースを入れると、リストビューにエントリが表示されません..

以下は私のコードです

      adapter = new SimpleAdapter(PredefinedLocation.this, fillMaps, R.layout.list_item_deal, new String[] { "name" }, new int[] { R.id.name });
    // Adding data into listview
    lv.setAdapter(adapter);
    edtSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            lv.setTextFilterEnabled(true);
            lv.setFilterText(s.toString().trim());
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            if(s.length()==0){
                lv.clearTextFilter();
            }
        }
    });

たとえば、「The」と書くと、結果は「The Local」、「The Adams」になります。

しかし、「The Local」と書くと、結果は空白になります....「The」と「Local」のスペースのため:(

4

1 に答える 1

1

この問題はSimpleAdpaterを使用しているために発生しています。問題を解決するArrayAdapterを使用してみてください。なぜだかわかりません!

これをチェックしてください

http://www.talkandroid.com/android-forums/android-development-answers-tutorials-code-snippets/2534-diferent-filter-behavior-simplleadapter-arrayadapter.html

このようにコードを配置してみてください。完全に機能することをテストしました

  adapter = new ArrayAdapter<String>(PredefinedLocation.this, R.layout.list_item_deal, R.id.name, fillMaps);

    lv.setAdapter(adapter);
    edtSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            lv.setTextFilterEnabled(true);
            lv.setFilterText(s.toString().trim());
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            PredefinedLocation.this.adapter.getFilter().filter(s.toString().trim());
            /*if(s.length()==0){
                lv.clearTextFilter();
            }*/
        }
    });
于 2012-11-06T08:45:10.317 に答える