中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android怎么實現簡單動態搜索功能

發布時間:2022-05-12 14:41:35 來源:億速云 閱讀:422 作者:iii 欄目:開發技術

本篇內容介紹了“Android怎么實現簡單動態搜索功能”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    前言

    提到Android的動態搜索,大多應該會想到EditText的文本改變的監聽器(addTextChangedListener),本文會簡單介紹一下,但是本文介紹的是SearchView+Listview的實現。

    效果圖:

    Android怎么實現簡單動態搜索功能

    一、addTextChangedListener

    使用這種方式的思路簡述就是,當監聽到文本改變時,就用Handler post一個Runnable去做相應的改變,動態修改ListView的顯示。

    二、本文案例

    1.介紹一下SearchView的一些方法

    • setIconified():設置搜索框直接展開顯示。左側有放大鏡(在搜索框中) 右側有叉叉 可以關閉搜索框

    • setIconifiedByDefault():設置搜索框直接展開顯示。左側有放大鏡(在搜索框外) 右側無X樣式點擊按鈕 有輸入內容后有X樣式點擊按鈕 不能關閉搜索框

    • onActionViewExpanded():設置搜索框直接展開顯示。左側有無放大鏡(在搜索框中) 右側無叉叉 有輸入內容后有X樣式點擊按鈕, 不能關閉搜索框

    • setOnQueryTextListener():為 SearchView 中的用戶操作設置偵聽器。

    • setSubmitButtonEnabled():當查詢非空時啟用顯示提交按鈕。

    • setQueryHint():查詢提示語句

    2.準備數據

    本案例使用一個String數組

    private final String[] mStrings = Cheeses.sCheeseStrings;

    3.初始化以及填充數據

    mSearchView = (SearchView) findViewById(R.id.search_view);
            mListView = (ListView) findViewById(R.id.list_view);
            mListView.setAdapter(mAdapter = new ArrayAdapter<>(this,
                    android.R.layout.simple_list_item_1,
                    mStrings));
            //設置是否可以通過鍵盤輸入的字符來過濾掉不需要的選項,定位到需要的選項。
            mListView.setTextFilterEnabled(true);
            setupSearchView();
    private void setupSearchView() {
            //設置搜索框直接展開顯示。左側有放大鏡(在搜索框中) 右側有叉叉 可以關閉搜索框
            //mSearchView.setIconified(false);
            //設置搜索框直接展開顯示。左側有放大鏡(在搜索框外) 右側無叉叉 有輸入內容后有叉叉 不能關閉搜索框
            //mSearchView.setIconifiedByDefault(false);
            //設置搜索框直接展開顯示。左側有無放大鏡(在搜索框中) 右側無叉叉 有輸入內容后有叉叉 不能關閉搜索框
            mSearchView.onActionViewExpanded();
            //為 SearchView 中的用戶操作設置偵聽器。
            mSearchView.setOnQueryTextListener(this);
            //當查詢非空時啟用顯示提交按鈕。
            mSearchView.setSubmitButtonEnabled(false);
            //查詢提示語句
            mSearchView.setQueryHint(getString(R.string.cheese_hunt_hint));
        }

    4.在SearchView中用戶輸入字符時激發方法里寫入簡單邏輯

    //用戶輸入字符時激發該方法
    public boolean onQueryTextChange(String newText) {
            if (TextUtils.isEmpty(newText)) {
                mListView.clearTextFilter();
            } else {
                mListView.setFilterText(newText.toString());
            }
            return true;
        }

    三、源碼

    JimengSearchView.java

    public class JimengSearchView extends Activity implements SearchView.OnQueryTextListener {
        private SearchView mSearchView;
        private ListView mListView;
        private ArrayAdapter<String> mAdapter;
    
        private final String[] mStrings = Cheeses.sCheeseStrings;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    
            setContentView(R.layout.searchview_filter);
    
            mSearchView = (SearchView) findViewById(R.id.search_view);
            mListView = (ListView) findViewById(R.id.list_view);
            mListView.setAdapter(mAdapter = new ArrayAdapter<>(this,
                    android.R.layout.simple_list_item_1,
                    mStrings));
            //設置是否可以通過鍵盤輸入的字符來過濾掉不需要的選項,定位到需要的選項。
            mListView.setTextFilterEnabled(true);
            setupSearchView();
            mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    String str = (String)((TextView) view).getText();
                    Toast.makeText(JimengSearchView.this,str,Toast.LENGTH_SHORT).show();
                }
            });
        }
    
        private void setupSearchView() {
            //設置搜索框直接展開顯示。左側有放大鏡(在搜索框中) 右側有叉叉 可以關閉搜索框
            //mSearchView.setIconified(false);
            //設置搜索框直接展開顯示。左側有放大鏡(在搜索框外) 右側無叉叉 有輸入內容后有叉叉 不能關閉搜索框
            //mSearchView.setIconifiedByDefault(false);
            //設置搜索框直接展開顯示。左側有無放大鏡(在搜索框中) 右側無叉叉 有輸入內容后有叉叉 不能關閉搜索框
            mSearchView.onActionViewExpanded();
            //為 SearchView 中的用戶操作設置偵聽器。
            mSearchView.setOnQueryTextListener(this);
            //當查詢非空時啟用顯示提交按鈕。
            mSearchView.setSubmitButtonEnabled(false);
            //查詢提示語句
            mSearchView.setQueryHint(getString(R.string.cheese_hunt_hint));
        }
        //用戶輸入字符時激發該方法
        public boolean onQueryTextChange(String newText) {
            if (TextUtils.isEmpty(newText)) {
                mListView.clearTextFilter();
            } else {
                mListView.setFilterText(newText.toString());
            }
            return true;
        }
    
        public boolean onQueryTextSubmit(String query) {
            return false;
        }
    }

    布局文件:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
        <SearchView
                android:id="@+id/search_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
        <ListView
                android:id="@+id/list_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"/>
    
    </LinearLayout>

    strings.xml

    <string name="cheese_hunt_hint">請輸入要查詢的內容</string>

    Cheeses.java

    public class Cheeses {
    
        public static final String[] sCheeseStrings = {
                "Android自定義view之3D正方體","計蒙不吃魚","Android自定義view之利用drawArc方法實現動態效果","Android 3D效果的實現","OkHttp源碼解析",
                "Android翻轉動畫(卡片翻轉效果)","Android自定義view之圍棋動畫","Android自定義view之模仿登錄界面文本輸入框(華為云APP)",
                "Android自定義view之太極圖","Android自定義view獲取attr中自定義顏色的問題","Android對抗反編譯","Android常用的room增刪改查語句(外部數據庫)",
                "Android用Canvas畫一個折線圖,并加以簡單封裝","Android用Canvas畫一個真正能跑的跑馬燈","Android網絡小說閱讀器的實現",
                "Android護眼模式(argb)","Android約束布局ConstraintLayout","Android實現EditText的抖動效果"
        };
    
    }

    “Android怎么實現簡單動態搜索功能”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    吉隆县| 寻乌县| 易门县| 新巴尔虎左旗| 陵水| 洛宁县| 苏尼特左旗| 建平县| 太保市| 萍乡市| 麻江县| 托克托县| 祁连县| 鄱阳县| 西安市| 江源县| 象州县| 师宗县| 垫江县| 宣威市| 冕宁县| 仁怀市| 邛崃市| 泰和县| 滨海县| 阿巴嘎旗| 固阳县| 崇文区| 景洪市| 株洲市| 长汀县| 神池县| 左贡县| 营口市| 永昌县| 田林县| 滦南县| 来宾市| 昂仁县| 大宁县| 滁州市|