SearchView搜索过滤

本文介绍如何使用SearchView控件实现Android应用中的搜索功能。通过示例代码展示了如何配置SearchView,并结合ListView实现搜索过滤效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现的xml文件 今天我们引入SearchView控件这个是实现搜索的一个控件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="10dp"
    android:orientation="vertical"
    >

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

        ></SearchView>
    <ListView 
        android:id="@+id/lv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ></ListView>
</LinearLayout>

//主类中我们实现搜索的过滤 对下面的listview中的内容实现根据搜索框中输入的内容进行过滤

import android.text.TextUtils;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.Toast;
import android.widget.SearchView.OnQueryTextListener;

public class MainActivity extends Activity implements
        OnQueryTextListener {
    // 定义控件
    private ListView lv;
    private SearchView sv;
    private String[] mStrings = { "苹果", "小苹果", "青苹果", "黄苹果" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 绑定控件
        lv = (ListView) findViewById(R.id.lv);
        // 设置数据
        lv.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, mStrings));
        // 这个方法的作用是用来过滤选项的.
        // 例如在软键盘上打出一个a,则会过滤掉除了a开头的所有选项.
        lv.setTextFilterEnabled(true);

        sv = (SearchView) findViewById(R.id.sv);
        // 设置该SearchView默认是否自动缩小为图标
        sv.setIconifiedByDefault(false);
        // 为该搜索组件设置监听事件
        sv.setOnQueryTextListener(this);// 查询的监听
        // 设置该SearchView显示搜索按钮
        sv.setSubmitButtonEnabled(true);// 同意的按钮
        // 设置该SearchView内默认显示的提示文本
        sv.setQueryHint("查找");// 查询默认的额字

    }

    @Override
    public boolean onQueryTextSubmit(String query) {
        // 实际应用中应该在该方法内执行实际查询
        // 此处仅使用Toast显示用户输入的查询内容
        Toast.makeText(this, "您的选择是:" + query, Toast.LENGTH_SHORT).show();
        return false;
    }

    @Override
    public boolean onQueryTextChange(String newText) {//这个是传入一个新的文字
        // TODO Auto-generated method stub
        if (TextUtils.isEmpty(newText)) {//如果这个文字等于空
            //清除listview的过滤
            lv.clearTextFilter();
        }else {
            lv.setFilterText(newText);
        }
        return true;
    }
}

下面来看一下我们上面的代码实现的效果:

这里写图片描述

上面的代码只是一个小小的例子 我们还可以在这个上面的额基础上添加一些代码 这个就相当于我们的启蒙老师。看看你的学习能力有多强。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值