安卓权威编程指南 挑战练习 25章 深度优化 PhotoGallery 应用

满堂花醉三千客,一剑霜寒十四州。这篇文章主要讲述安卓权威编程指南 挑战练习 25章 深度优化 PhotoGallery 应用相关的知识,希望能为你提供帮助。

你可能已经注意到了,提交搜索时, RecyclerView 要等好一会才能刷新显示搜索结果。请接受挑战,让搜索过程更流畅一些。用户一提交搜索,就隐藏软键盘,收起 SearchView 视图(回到只显示搜索按钮的初始状态)。再来个挑战。用户一提交搜索,就初始化 RecyclerView ,显示一个搜索结果加载状态界面(使用状态指示器)。下载到JSON数据之后,就删除状态指示器。也就是说,一旦开始下载图片,
就不应显示加载状态了
 
  1.提交搜索,隐藏软键盘,收起SearchView;
【安卓权威编程指南 挑战练习 25章 深度优化 PhotoGallery 应用】将SearchView变为成员变量,增加一个InputMethodManager对象,在onCreate()方法中对其进行实例化。
private InputMethodManager mInputMethodManager; private SearchView mSearchView; mInputMethodManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);

 
在PhotoGalleryFragment中增加隐藏软键盘,收起SearchView的方法,代码如下:
private void hintSoftInputAndSearchField(){ View v = getActivity().getCurrentFocus(); if(v == null){ return; } mInputMethodManager.hideSoftInputFromWindow(v.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); //折叠软键盘 mSearchView.onActionViewCollapsed(); //收起SearchView的方法。 }

然后在SearchView监听器的onQueryTextSubmit()方法中调用即可。
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String s) {//提交搜索查询时。这个方法执行。 Log.d(TAG, "onQueryTextSubmit: "+ s); QueryPreferences.setStoredQuery(getActivity(),s); //存储用户提交的查询信息。 updateItems(); hintSoftInputAndSearchField(); //隐藏键盘的方法 mProgressDialog= getDialog(); mProgressDialog.show(); return true; }...... });

 
2.显示一个搜索结果加载状态界面(使用状态指示器),当下载到JSON数据时删除。
1.增加一个ProgressDialog的成员变量。
publicProgressDialog mProgressDialog;

2.在SearchView监听器的onQueryTextSubmit()方法中让对话框显示出来。(进行搜索时候显示)
mProgressDialog=new ProgressDialog(getActivity()); mProgressDialog.setMessage("loading..."); mProgressDialog.setCancelable(true); mProgressDialog.show();

3.在FetchItemsTask类中的onPostExecute()方法中将对话框移除(获取到数据后关闭)
@Override protected void onPostExecute(List< GalleryItem> items){ mItems = items; if(mItems.size() > 0){//如果有数据则关闭 mProgressDialog.dismiss(); } setupAdapter(); }

 

    推荐阅读