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); // 是否縮小為圖標(biāo)
        searchView.setOnQueryTextListener(this); // 注冊(cè)事件監(jiān)聽(tīng)器
        searchView.setSubmitButtonEnabled(true); // 顯示搜索按鈕
        searchView.setQueryHint("Find"); // 默認(rèn)顯示的提示文本
    }


    @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 的過(guò)濾
        } else {
            listView.setFilterText(newText); // 使用用戶輸入的內(nèi)容對(duì) ListView 列表項(xiàng)進(jìn)行過(guò)濾
            listView.setVisibility(View.VISIBLE);
        }
        return true;
    }
}

測(cè)試程序的運(yùn)行效果:

顯示效果

參考文獻(xiàn):《瘋狂Android講義(第2版)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評(píng)論 25 709
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • 《極簡(jiǎn)》為我們打開(kāi)了一扇更簡(jiǎn)單更豐盛的生活之窗,讓我們可以在自己能擁有的一切中,發(fā)現(xiàn)自己想要的生活。 身處在一個(gè)物...
    晚風(fēng)中Sharon閱讀 351評(píng)論 0 5
  • 文/晴天過(guò)后上一章 目錄 雨嫻一個(gè)不防,被他抓住了腳踝,那人心里一喜,急抓著往后一拉,想將雨嫻摔倒...
    晴天過(guò)后閱讀 938評(píng)論 12 21
  • 水是眼波橫,山是眉峰聚。欲問(wèn)行人去那邊?眉眼盈盈處。 才始送春歸,又送君歸去。若到江南趕上春,千萬(wàn)和春住。 六月楊...
    情緒調(diào)控站閱讀 437評(píng)論 2 6

友情鏈接更多精彩內(nèi)容