0

このチュートリアルに従ってください:tuto

EditText を使用して ListActivity に検索機能を追加したいと考えています。

このチュートリアルでは、その方法を説明していますが、単純な ArrayAdapter を使用しています:

// Listview Data
    String products[] = {"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE",
                            "iPhone 4S", "Samsung Galaxy Note 800",
                            "Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};

    lv = (ListView) findViewById(R.id.list_view);
    inputSearch = (EditText) findViewById(R.id.inputSearch);

    // Adding items to listview
    adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);
    lv.setAdapter(adapter);

    /**
     * Enabling Search Filter
     * */
    inputSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            // When user changed the Text
            MainActivity.this.adapter.getFilter().filter(cs);
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }

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

私もそれを作ることができるでしょうが、私のカスタムで: ArrayAdapter

編集 :

私のオブジェクトの toString() 戻り値で検索が機能するようになりました。

今、私はこの問題を抱えています:

私の EditText には「wine」があり、リストにはこの単語を含む要素が 1 つだけあります: my list:

-----------------
---------
The god of wine and orange juice
---------------
----------------------

正常に機能しており、結果に「神..」が表示されるようになりましたが、ワインの後にスペースを入れると結果が消えます..

4

1 に答える 1

0

モデルクラス内のメソッドをオーバーライドして、リスト内に表示するものを設定するだけですArrayAdapterArrayAdapter<MyObject>toString()

于 2012-09-09T19:54:24.727 に答える