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

从来好事天生俭,自古瓜儿苦后甜。这篇文章主要讲述安卓权威编程指南-笔记(第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();
} }

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



    推荐阅读