0

遵循本教程:tuto

我想在我的 ListActivity 中添加一个带有 EditText 的搜索功能。

本教程解释了如何做到这一点,但使用一个简单的 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”,在我的列表中,我只有一个包含这个词的元素:我的列表:

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

工作正常,我现在在结果上只有“上帝……”,但如果我在酒后加一个空格,结果就会消失……

4

1 回答 1

0

您可以在 中添加任何您想要的内容ArrayAdapter,即... ArrayAdapter<MyObject>,只需覆盖toString()模型类中的方法以设置将在列表中显示的内容。

于 2012-09-09T19:54:24.727 回答