• 安卓权威编程指南-笔记(第25章 搜索)


    1. SearchView

    SearchView是个操作视图,所谓操作视图,就是可以内置在工具栏中的视图。SearchView可以让整个搜索界面完全内置在应用的工具栏中。

    1.1 SearchView的配置

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <item
            android:id="@+id/menu_item_search"
            android:title="@string/search"
            app:actionViewClass="android.support.v7.widget.SearchView"
            app:showAsAction="ifRoom" />
    </menu>

    app:actionViewClass指定android.support.v7.widget.SearchView值,告诉工具栏要显示 SearchView 。

    之后通过 onCreateOptionsMenu()方法进行实例化菜单XML文件,这样,工具栏就能显示定义在菜单XML中的选项了。

    1.2 SearchView的使用

    对其实例化,然后设置回调的接口。

    MenuItem searchItem = menu.findItem(R.id.menu_item_search); //将MenuItem取出并保存在searchItem变量中。
            mSearchView = (SearchView)searchItem.getActionView(); //取出SearchView对象。
    
    
    
            //设置监听器
            mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String s) {//提交搜索查询时。这个方法执行。
                    Log.d(TAG, "onQueryTextSubmit: "+ s);
                    return true;
                }
    
                @Override
                public boolean onQueryTextChange(String s) { //搜索框的文字有变化时,这个方法执行。
                    Log.d(TAG, "onQueryTextChange: " + s);
                    return false;
                }
             });

    2.使用 shared preferences 实现轻量级数据存储

    shared preferences本质上就是文件系统中的文件,可使用 SharedPreferences 类读写它。SharedPreferences 实例用起来更像一个键值对仓库(类似于 Bundle ),但它可以通过持久化存储保存数据。键值对中的键为字符串,而值是原子数据类型。进一步查看shared preferences文件可知,它们实际上是一种简单的XML文件,但 SharedPreferences 类已屏蔽了读写文件的实现细节。shared preferences文件保存在应用沙盒中,所以,类似密码这样的敏感信息不应该用它来保存。

    要 获 得 定 制 的 SharedPreferences 实 例 , 可 使 用 Context.getSharedPreferences(String,int) 方法。然而,在实际开发中,我们并不关心具体是什么样的 SharedPreferences实例,只要它能共享于整个应用就可以了。这种情况下,最好使用 PreferenceManager.getDefaultSharedPreferences(Context) 方法,该方法会返回具有私有权限和默认名称的实例(仅在当前应用内可用)。

    Shared Preference 示例:

    public class QueryPreferences {
        private static final String PREF_SEARCH_QUERY = "searchQuery";
        public static String getStoredQuery(Context context) {
        return PreferenceManager.getDefaultSharedPreferences(context).getString(PREF_SEARCH_QUERY, null);
      }
        public static void setStoredQuery(Context context, String query) {
        PreferenceManager.getDefaultSharedPreferences(context)
        .edit()
        .putString(PREF_SEARCH_QUERY, query)
        .apply();
      } }
  • 相关阅读:
    2019-06-09 学习日记 day30 JS
    2019-06-08 学习日记 day29 CSS
    2019-06-07 学习日记 day28 THML
    2019-06-06 Java学习日记 day27 反射
    2019-06-05 Java学习日记 day26 网络编程
    2019-06-04 Java学习日记 day25 多线程下
    Linux安装Nginx
    Linux安装MySQL
    Linux安装Redis
    Java Swing实战(五)表格组件JTable(1)
  • 原文地址:https://www.cnblogs.com/chase1/p/7217666.html
Copyright © 2020-2023  润新知