第二十七章 搜索
sharePreference
sharePreference
本质上就是文件系统中的文件. 他可以通过持久化存储保存数据.
- 键值对中的键是字符串, 而值是原子数据类型.
- sharePreference文件保存在应用沙盒中, 所以不应该保存类似密码这样的敏感信息. 是一种简单的xml文件
- 存储
public static void setStoredQuery(Context context, String query){
PreferenceManager.getDefaultSharedPreferences(context)
.edit()
.putString(PREF_SEARCH_QUERY,query)
.apply();
}
- 读取
public static String getStoredQuery(Context context){
return PreferenceManager.getDefaultSharedPreferences(context)
.getString(PREF_SEARCH_QUERY, null);
}
Searchview
- 可放于菜单文件中
- 在监听器中要实现
onQueryTextSubmit
和onQueryTextChange
这两个方法 - 使用
<item android:id="@+id/menu_item_seach"
android:title="@string/search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom"/>
MenuItem searchItem = menu.findItem(R.id.menu_item_seach);
final SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Log.d(TAG, "QueryTextSubmit: " + query);
QueryPreferences.setStoredQuery(getActivity(), query);
updateItems();
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
Log.d(TAG, "QueryTextChange: " + newText);
return false;
}
});
相关小记
sharePreference
可以实现定制实例Context.getSharePreferences(String, int)
方法. (不常使用)
挑战练习
- 用户提交搜索后, 隐藏键盘, 回到主界面
- 用户提交搜索, 显示一个加载的界面(使用状态指示器), 下载完成后, 就不显示加载状态