Android SearchView筛选器不工作

Android SearchView筛选器不工作,android,cursor,android-contentprovider,searchview,Android,Cursor,Android Contentprovider,Searchview,我正在尝试使用searchView筛选Listview,我使用SimpleCursorAdapter填充了Listview,但当我点击searchView栏并键入nothing filters时,我已经完成了以下操作 我的搜索活动 package com.example.androidcontacts; import java.util.ArrayList; import android.app.ListActivity; import android.content.CursorLoader

我正在尝试使用searchView筛选Listview,我使用SimpleCursorAdapter填充了Listview,但当我点击searchView栏并键入nothing filters时,我已经完成了以下操作

我的搜索活动

package com.example.androidcontacts;

import java.util.ArrayList;
import android.app.ListActivity;
import android.content.CursorLoader;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.widget.CursorAdapter;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;
import android.widget.SimpleCursorAdapter;

public class Search extends ListActivity {


    ListView listView;
    SearchView searchView;

    ArrayAdapter<String> adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);

        searchView=(SearchView)findViewById(R.id.searchView1);
        listView=(ListView)findViewById(android.R.id.list);

        Uri allContacts = Uri.parse("content://"+"com.example.androidcontacts.Books" + "/Contact");

        Cursor c;
        CursorLoader cursorLoader = new CursorLoader(
        this,allContacts,null,null,null,null);
        c = cursorLoader.loadInBackground();
        // THE DESIRED COLUMNS TO BE BOUND*/
        String[] columns = new String[] {Contact.TITLE};    
        int[] views = new int[] {R.id.code};

        listView.setAdapter(adapter);
    final SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.listview_item_layout, 
                c, columns, views,CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);

        this.setListAdapter(adapter); 



    searchView.setOnQueryTextListener(new OnQueryTextListener(){


            @Override
            public boolean onQueryTextSubmit(String query) {

                    return false;

            }

            @Override
            public boolean onQueryTextChange(String newText) {
                adapter.getFilter().filter(newText);


                return false;
            }

        });
    }

}
当数据集中发生更改时,始终调用适配器的“notify”方法,因为它是游标或数组

adapter.getFilter().filter(newText);
adapter.notifyDatasetChanged();
您还可以仅为UI更新而不是数据更改调用notifyDatasetInvalidated()。但是对于你的问题,你应该试试第一个

希望这有帮助

adapter.getFilter().filter(newText);
adapter.notifyDatasetChanged();