如何在Android中使用编辑文本搜索列表视图?

如何在Android中使用编辑文本搜索列表视图?,android,android-listview,Android,Android Listview,我想通过在EditText中写入一些内容来搜索ListView。比如,如果我先写单词Su,那么ListView中包含前两个单词Su的内容应该位于顶部 这是我的代码: Sear = (AutoCompleteTextView) findViewById(R.id.Search); Sear.setThreshold(1); Sear.addTextChangedListener(new TextWatcher() { @Override publ

我想通过在EditText中写入一些内容来搜索ListView。比如,如果我先写单词Su,那么ListView中包含前两个单词Su的内容应该位于顶部

这是我的代码:

Sear = (AutoCompleteTextView) findViewById(R.id.Search);
    Sear.setThreshold(1);

    Sear.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            System.out.println("Text ["+s+"]");

            sdAdapter.getFilter().filter(s.toString());                           
        }

        @Override

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {

        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });
现在,当我在EditText中写入某些内容时,ListView将消失。 我的ListView中有5列。我想搜索该特定人员的姓名,并用该姓名搜索ListView

这是适配器:

sdAdapter = new StationDetails_Adapter(AllStations.this, R.layout.listview_row2 , Stationlist);

您必须在listAdapter中实现filterable。 下面的例子做了和您想做的相同的事情

可以使用本地SQLite数据库在ListView中进行搜索。我想您应该了解SQLite数据库,然后按照如下步骤操作:

1设置ListView适配器并将所有数据存储在SQLite数据库中

2在DB端编写一个简单的查询,如:从您的\u表\u名称中选择*,其中列\u名称如“%+您的\u搜索\u关键字+%”

3在ContextChanged方法中执行此查询

4使用游标从SQLite DB获取搜索关键字的所有数据,并设置ListView适配器

5若光标不返回任何数据,则表示您并没有搜索关键字的记录

其他方式:除了SQLite DB之外,您可以在特定的搜索关键字上设置适配器和过滤器,如:

例如:


上面的示例是从

中引用的,如果它有助于您不搜索listview,请尝试此处。您将搜索Stationlist。在筛选数据时是否调用notifyDatasetChanged?我很困惑。没用,我帮了忙。我在下面做了一个复制粘贴的工作。你为什么要发布这个链接作为答案呢。最好发布部分代码。所以它可能会解决OP问题。@Piyus。。。老兄,如果它已经在其他地方运行了代码,那么最好是共享链接,而不是粘贴代码。否则,开发人员可能会感到困惑。然后你需要发表评论!此方面的帮助:此方面的帮助:
    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);

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                          
    }
});