zoukankan      html  css  js  c++  java
  • 安卓权威编程指南-笔记(第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();
      } }
  • 相关阅读:
    Session、Cookie、Application、ViewState和Cache 这四者的区别
    用C#构造HighChart类库,把数据转换成JSON第二阶段完成50%API,已经能满足项目要求了
    HttpHandler 在SharePoint 2010中的应用
    SharePoint 2010 在多台前端环境 还原 网站集 问题解析
    SharePoint 2010 PowerShell 系列 之 文档管理 高级应用和企业案例(文档迁移)
    设计模式策略模式
    CentOS7 安装Hbase集群
    CentOS7 安装zookeeper
    CentOS7 安装Hadoop集群环境
    Django Rest Framework关闭CSRF验证
  • 原文地址:https://www.cnblogs.com/chase1/p/7217666.html
Copyright © 2011-2022 走看看