我如何过滤ListView项目?

时间:2015-06-19 19:56:02

标签: java android listview filter searchview

我正在尝试使用ListView过滤SearchView个项目。

这是我的XML代码。 :

    <ListView
        android:layout_width="fill_parent"
        android:layout_height="200dp"
        android:id="@android:id/list"
        android:choiceMode="none"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/searchView"
        style="@style/CodeFont">

        </ListView>

    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/scrollView"
        android:layout_above="@android:id/list"
        android:layout_alignParentEnd="true"
        android:layout_toEndOf="@android:id/list" />

    <SearchView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/searchView"
        android:hint="Search contact.."
        android:layout_alignParentStart="true"
        android:layout_alignEnd="@android:id/list"

        />

这是我的java代码

        ListView lv = (ListView) findViewById(android.R.id.list);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String poiName = ((TextView)(view.findViewById(android.R.id.text1))).getText().toString();
                Intent intent = new Intent(MainActivity.this, Message.class);
                intent.putExtra("name",poiName);
                startActivity(intent);
            }
        });

        Cursor =getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
        startManagingCursor(Cursor);
        String[] from = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone._ID};
        int [] to ={android.R.id.text1,android.R.id.text2};

        final SimpleCursorAdapter listadapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,Cursor,from,to);
        setListAdapter(listadapter);
        list=getListView();
        list.setChoiceMode(ListView.CHOICE_MODE_NONE);

ListView正在显示用户手机中的所有联系人。 我想使用SearchView

制作过滤器

1 个答案:

答案 0 :(得分:0)

假设您要检索包含您在SearchView中输入的内容的所有数字,并按升序显示。这可以通过以下方式实现:

    String query = searchView.getQuery().toString();
    Cursor cursor = getContentResolver().query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            null,
            TextUtils.isEmpty(query) ? null : ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE ?",
            TextUtils.isEmpty(query) ? null : new String[] {query},
            TextUtils.isEmpty(query) ? null : ContactsContract.CommonDataKinds.Phone.NUMBER + " ASC"
    );

每当您更改SearchView中的文字时,请不要忘记通知您的适配器。