Android SearchView 使用示例

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorGray"
    android:orientation="vertical"
    >

    <SearchView
        android:id="@+id/searchView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />

</LinearLayout>

主程序文件

package com.toby.personal.testlistview;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.SearchView;
import android.text.TextUtils;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements SearchView.OnQueryTextListener {

    final private static String TAG = "Toby_Test";

    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final String[] mString = {"test aaa", "test bbb", "test ccc"};

        listView = (ListView) findViewById(R.id.listView);
        listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mString));
        listView.setTextFilterEnabled(true);
        listView.setVisibility(View.GONE);

        final SearchView searchView = (SearchView) findViewById(R.id.searchView);
        searchView.setIconifiedByDefault(false); // 是否缩小为图标
        searchView.setOnQueryTextListener(this); // 注册事件监听器
        searchView.setSubmitButtonEnabled(true); // 显示搜索按钮
        searchView.setQueryHint("Find"); // 默认显示的提示文本
    }


    @Override
    public boolean onQueryTextSubmit(String query) {
        Toast.makeText(this, R.string.show, Toast.LENGTH_SHORT).show();
        return false;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        if (TextUtils.isEmpty(newText)) {
            listView.setVisibility(View.GONE);
            listView.clearTextFilter(); // 清除 ListView 的过滤
        } else {
            listView.setFilterText(newText); // 使用用户输入的内容对 ListView 列表项进行过滤
            listView.setVisibility(View.VISIBLE);
        }
        return true;
    }
}

测试程序的运行效果:

显示效果

参考文献:《疯狂Android讲义(第2版)》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,523评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 《极简》为我们打开了一扇更简单更丰盛的生活之窗,让我们可以在自己能拥有的一切中,发现自己想要的生活。 身处在一个物...
    晚风中Sharon阅读 316评论 0 5
  • 文/晴天过后上一章 目录 雨娴一个不防,被他抓住了脚踝,那人心里一喜,急抓着往后一拉,想将雨娴摔倒...
    晴天过后阅读 846评论 12 21
  • 水是眼波横,山是眉峰聚。欲问行人去那边?眉眼盈盈处。 才始送春归,又送君归去。若到江南赶上春,千万和春住。 六月杨...
    情绪调控站阅读 387评论 2 6