package com.kitty.poclient.fragment.store; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ExpandableListView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import com.kitty.poclient.R; import com.kitty.poclient.adapter.SearchHistoryListAdapter; import com.kitty.poclient.adapter.SearchResultListAdapter; import com.kitty.poclient.adapter.SearchResultXListAdapter; import com.kitty.poclient.common.Constant; import com.kitty.poclient.common.ViewFactory; import com.kitty.poclient.common.WatchDog; import com.kitty.poclient.dao.MusicDao; import com.kitty.poclient.dao.SearchHistoryDao; import com.kitty.poclient.domain.Album; import com.kitty.poclient.domain.Artist; import com.kitty.poclient.domain.Music; import com.kitty.poclient.domain.SearchDataObject; import com.kitty.poclient.fragment.TabWebFragment; import com.kitty.poclient.fragment.TabWebFragment.TitlebarUpdateFragment; import com.kitty.poclient.http.HttpPoster; import com.kitty.poclient.interfaces.SelfReloader; import com.kitty.poclient.util.ListviewDataPositionRecorder; import com.kitty.poclient.util.MediaUtil; public class SearchFragment extends Fragment implements TitlebarUpdateFragment,SelfReloader { // Looper.prepare private final String TAG = "SearchResultFragment: "; private Context context; private View view; private LinearLayout llFace; private LinearLayout llLoading; private LinearLayout llContent; private LinearLayout llHistory; private LinearLayout llTabContent; private LinearLayout llNoResult; private ExpandableListView xlvResult; private ListView lvResultAlbums; private ListView lvResultMusics; private ListView lvResultArtists; // 历史记录界面 private View historyView; private ListView lvHistory; private Button btnClearHistory; private SearchHistoryListAdapter historyAdapter; private View footerView; private TextView tvLoadMore; private LinearLayout llLoadingMore; private boolean isAddingData = false; private AnimationDrawable ad; private SearchResultXListAdapter adapter; private SearchResultListAdapter albumAdapter; private SearchResultListAdapter musicAdapter; private SearchResultListAdapter artistAdapter; private ListviewDataPositionRecorder lpRecorder; public Set<Bitmap> bitmaps = new HashSet<Bitmap>(); private String keyword = ""; private SearchDataObject sdo; private Button tabAll; private Button tabAlbum; private Button tabMusic; private Button tabArtist; private Button btnReload; private Button[] tabs; private TextView tabAllSelected; private TextView tabAlbumSelected; private TextView tabMusicSelected; private TextView tabArtistSelected; private List<TextView> tabUnderlines = new ArrayList<TextView>(); private final int MSG_SHOW_ADDED_DATA = 0; private final int MSG_DATA_LOAD_FAILD = 1; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MSG_SHOW_ADDED_DATA: musicAdapter.notifyDataSetChanged(); if (isAddingData == true) { tvLoadMore.setVisibility(View.VISIBLE); llLoadingMore.setVisibility(View.GONE); isAddingData = false; checkIfDataLoadCompleted(msg.arg1); } break; case MSG_DATA_LOAD_FAILD: uiShowNoData(); break; } super.handleMessage(msg); } }; public void uiShowNoData() { System.out.println(TAG+"showNoData"); llFace.setVisibility(View.VISIBLE); llContent.setVisibility(View.GONE); llLoading.setVisibility(View.GONE); llHistory.setVisibility(View.GONE); View loadFailureView=new ViewFactory().createLoadFailureView(this); llFace.removeAllViews(); llFace.addView(loadFailureView); } public SearchFragment() { } public SearchFragment(Context context) { this.context = context; } public SearchFragment(Context context, SearchDataObject sdo) { this.context = context; this.sdo = sdo; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { System.out.println(TAG + "onCreateView"); // parentActivityChangeButton(); // parentActivityChangeTitle(); updateTitlebar(); view = LayoutInflater.from(context).inflate(R.layout.search_result, null); view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); initComponents(); initHistoryView(); initData(); initBtnReload(); initExpandableListView(); initLvAlbums(); initLvMusics(); initLvArtists(); initTabListeners(); initListviewOnScrollListeners(); WatchDog.searchResultFragmentRunning = true; return view; } private void initListviewOnScrollListeners() { ListView[] listViews=new ListView[]{xlvResult,lvResultAlbums,lvResultArtists}; lpRecorder=new ListviewDataPositionRecorder().registerListviews(listViews); } private void initHistoryView() { historyView=LayoutInflater.from(getActivity()).inflate(R.layout.search_history_listview, null); lvHistory=(ListView) historyView.findViewById(R.id.lv_search_history); btnClearHistory=(Button) historyView.findViewById(R.id.btn_clear_search_history); historyAdapter=new SearchHistoryListAdapter(getActivity()); lvHistory.setAdapter(historyAdapter); btnClearHistory.setFocusableInTouchMode(false); btnClearHistory.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.e("BUG956", "btnClearHistory onClick"); clearSearchHistory(); } }); // btnClearHistory.setOnTouchListener(new OnTouchListener() { // // @Override // public boolean onTouch(View v, MotionEvent event) { // Log.e("BUG956", "btnClearHistory onTouch:event="+event); // if(event.getAction()==MotionEvent.ACTION_UP){ // clearSearchHistory(); // } // return false; // } // }); } private void initBtnReload() { btnReload.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { WatchDog.tabWebFragment.showSoftInput(); handler.postDelayed(new Runnable() { @Override public void run() { WatchDog.tabWebFragment.hideSoftInput(); } }, 100); } }); } private void initData() { sdo = new SearchDataObject(); sdo.setAlbums(new ArrayList<Album>()); sdo.setMusics(new ArrayList<Music>()); sdo.setArtists(new ArrayList<Artist>()); } // private void parentActivityChangeTitle() { // // TabWebActivity.tvTitle.setText("演出者"); // TabWebFragment.currentMenuItem = "搜索结果"; // ((TabWebActivity) context).useTitleStyle(TabWebFragment.TITLE_STYLE_SEARCH); // // ((TabWebActivity) context).initEtSearch(); // } // private void parentActivityChangeButton() { // TabWebActivity.changeButton("btnBack"); // // TabWebActivity.changeButton("btnMenu"); // } private void initTabListeners() { tabAll.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tabOnClickListener(v); } }); tabAlbum.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tabOnClickListener(v); } }); tabMusic.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tabOnClickListener(v); } }); tabArtist.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tabOnClickListener(v); } }); } protected void tabOnClickListener(View v) { onTabSelected((Button)v); WatchDog.tabWebFragment.focusOnContent(); } protected void onTabSelected(Button btn) { WatchDog.selectedSearchResultTabText = btn.getText().toString(); System.out.println("record selectedSearchResultTabText=" + btn.getText().toString()); for (TextView underline : tabUnderlines) { if (underline.getParent() == btn.getParent()) { underline.setVisibility(View.VISIBLE); showTabContent(btn); } else { underline.setVisibility(View.INVISIBLE); } } } private void showTabContent(TextView tv) { if (tv == tabAll) { showTabAll(); } else if (tv == tabAlbum) { showTabAlbum(); } else if (tv == tabMusic) { showTabMusic(); } else if (tv == tabArtist) { showTabArtist(); } } private void showNoResult() { llTabContent.removeAllViews(); llTabContent.addView(llNoResult); llNoResult.requestFocus(); llNoResult.invalidate(); } private void showTabArtist() { if (hasResult(sdo.getArtists())) { // artistAdapter.setList(sdo.getArtists()); // artistAdapter.notifyDataSetChanged(); // lvResultArtists.requestFocus(); // lvResultArtists.scrollTo(0, 0); llTabContent.removeAllViews(); llTabContent.addView(lvResultArtists); artistAdapter.notifyDataSetChanged(); } else { showNoResult(); } } private void showTabMusic() { if (hasResult(sdo.getMusics())) { // musicAdapter.setList(sdo.getMusics()); // musicAdapter.notifyDataSetChanged(); // lvResultMusics.requestFocus(); // lvResultMusics.scrollTo(0, 0); llTabContent.removeAllViews(); llTabContent.addView(lvResultMusics); musicAdapter.notifyDataSetChanged(); } else { showNoResult(); } } private void showTabAlbum() { if (hasResult(sdo.getAlbums())) { // albumAdapter.setList(sdo.getAlbums()); // albumAdapter.notifyDataSetChanged(); // lvResultAlbums.requestFocus(); // lvResultAlbums.scrollTo(0, 0); llTabContent.removeAllViews(); llTabContent.addView(lvResultAlbums); albumAdapter.notifyDataSetChanged(); } else { showNoResult(); } } private void showTabAll() { if (hasResult(sdo.getAlbums()) || hasResult(sdo.getMusics()) || hasResult(sdo.getArtists())) { // adapter.setSdo(sdo); // adapter.notifyDataSetChanged(); // xlvResult.requestFocus(); // xlvResult.scrollTo(0, 0); llTabContent.removeAllViews(); llTabContent.addView(xlvResult); adapter.notifyDataSetChanged(); } else { showNoResult(); } } private boolean hasResult(List list) { if (list == null || list.size() == 0) { return false; } else { return true; } } @Override public void onResume() { Log.e("BUG913", TAG+" onResume"); WatchDog.tabWebFragment.useTitleStyle(TabWebFragment.TITLE_STYLE_SEARCH); WatchDog.tabWebFragment.etSearch.requestFocus(); /* 由详情页返回时拿取原来的数据和位置 */ if (WatchDog.flagInSearchResult) { getSavedDataAndPosition(); WatchDog.tabWebFragment.setEtText(WatchDog.keywordInSearchResult); showSearchResult(); int i=useFormerTab(); useFormerPosition(i); WatchDog.flagInSearchResult = false; } WatchDog.currentSelfReloader = this; super.onResume(); } private void useFormerPosition(int tabIndex) { Log.e("BUG913", TAG+" useFormerPosition:tabIndex="+tabIndex); int arg0=WatchDog.listviewPositionMap.get(TAG).getFirstVisibleItemPosition(); int arg1=WatchDog.listviewPositionMap.get(TAG).getScrollTop(); Log.e("BUG913", TAG+" arg0="+arg0); Log.e("BUG913", TAG+" arg1="+arg1); switch (tabIndex) { case 0: // xlvResult.setSelectionFromTop(WatchDog.fvipInSearchResult, WatchDog.stInSearchResult); xlvResult.setSelectionFromTop(arg0,arg1); break; case 1: // lvResultAlbums.setSelectionFromTop(WatchDog.fvipInSearchResult, WatchDog.stInSearchResult); lvResultAlbums.setSelectionFromTop(arg0,arg1); break; case 2: break; case 3: // lvResultArtists.setSelectionFromTop(WatchDog.fvipInSearchResult, WatchDog.stInSearchResult); lvResultArtists.setSelectionFromTop(arg0,arg1); break; } } private int useFormerTab() { System.out.println("useFormerTab"); for (int i = 0; i < tabs.length; i++) { System.out.println("tabs[i].getText().toString()=" + tabs[i].getText().toString()); System.out.println("WatchDog.selectedSearchResultTabText=" + WatchDog.selectedSearchResultTabText); if (tabs[i].getText().toString().equals(WatchDog.selectedSearchResultTabText)) { System.out.println("ok show it"); onTabSelected(tabs[i]); return i; } } return 0; } private void initComponents() { llFace = (LinearLayout) view.findViewById(R.id.ll_face); llLoading = (LinearLayout) view.findViewById(R.id.ll_loading); llContent = (LinearLayout) view.findViewById(R.id.ll_content); llHistory = (LinearLayout) view.findViewById(R.id.ll_history); llTabContent = (LinearLayout) view.findViewById(R.id.ll_search_tab_content); // llNoResult = (LinearLayout) view.findViewById(R.id.ll_no_result); btnReload = (Button) view.findViewById(R.id.btn_reload); tabAll = (Button) view.findViewById(R.id.tab_all); tabAlbum = (Button) view.findViewById(R.id.tab_album); tabMusic = (Button) view.findViewById(R.id.tab_music); tabArtist = (Button) view.findViewById(R.id.tab_artist); tabs = new Button[] { tabAll, tabAlbum, tabMusic, tabArtist }; tabAllSelected = (TextView) view.findViewById(R.id.tab_all_selected); tabAlbumSelected = (TextView) view.findViewById(R.id.tab_album_selected); tabMusicSelected = (TextView) view.findViewById(R.id.tab_music_selected); tabArtistSelected = (TextView) view.findViewById(R.id.tab_artist_selected); tabUnderlines.add(tabAllSelected); tabUnderlines.add(tabAlbumSelected); tabUnderlines.add(tabMusicSelected); tabUnderlines.add(tabArtistSelected); xlvResult = (ExpandableListView) LayoutInflater.from(context).inflate(R.layout.search_all_xlistview, null); lvResultAlbums = (ListView) LayoutInflater.from(context).inflate(R.layout.search_album_listview, null); lvResultMusics = (ListView) LayoutInflater.from(context).inflate(R.layout.search_music_listview, null); lvResultArtists = (ListView) LayoutInflater.from(context).inflate(R.layout.search_artist_listview, null); llNoResult = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.search_no_result, null); footerView = LayoutInflater.from(context).inflate(R.layout.artists_item_footerview, null); tvLoadMore = (TextView) footerView.findViewById(R.id.tv_load_more); llLoadingMore = (LinearLayout) footerView.findViewById(R.id.ll_loading_more); adapter = new SearchResultXListAdapter(getActivity(), this); albumAdapter = new SearchResultListAdapter(getActivity(), this, 0); musicAdapter = new SearchResultListAdapter(getActivity(), this, 1); artistAdapter = new SearchResultListAdapter(getActivity(), this, 2); } public void onAlbumItemClick(int position) { long albumId = sdo.getAlbums().get(position).getId(); String albumName = sdo.getAlbums().get(position).getName(); // Bitmap albumBitmap = sdo.getAlbums().get(position).getBitmap(); String imgUrl = sdo.getAlbums().get(position).getImgUrl(); Intent intent = new Intent("showAlbumContentReceiver"); intent.putExtra("albumId", albumId); intent.putExtra("albumName", albumName); // intent.putExtra("bitmap", albumBitmap);// cant draw recycled bitmaps intent.putExtra("imgUrl", imgUrl); // intent.putExtra("layout", R.id.ll_web_root); // recordCurrentDataAndPosition(); // recycleNeeded = false; WatchDog.tabWebFragment.showAlbumContentReceiverOnReceive(intent); } public void onMusicItemClick(int position) { Music music = sdo.getMusics().get(position); // int state = getMusicStateById(music.getId()); // String uri = "xxbox://listen?id=" + music.getId(); // new Player().play(uri); // /* // * 1208; 试听失败提示:“试听失败,请检查网络”; setUri成功; 信息由boxSub订阅信息返回; 让纯鹏看下; // */ // // Intent intent = new Intent(getActivity(), WebListenActivity.class); // intent.putExtra("musicName", music.getName()); // intent.putExtra("artist", music.getArtistName()); // // intent.putExtra("imgUrl", music.getImgUrl()); // intent.putExtra("btnBuyText", getListenBtnText(music, state)); // intent.putExtra("btnBuyEnabled", getListenBtnEnabled(state)); // intent.putExtra("isFromSearch", true); // // WatchDog.currentListeningMusic = music; // Log.e(TAG, "onMusicItemClick>>WatchDog.currentListeningMusic: "+WatchDog.currentListeningMusic.getName()); // // UpnpApp.mainHandler.showInfo(R.string.store_listen_music_loading_info); // // getActivity().startActivity(intent); new MediaUtil(context).playLocally(music.getId()); } private boolean getListenBtnEnabled(int state) { return state == -1 ? true : false; } private int getMusicStateById(Long id) { return new MusicDao().getMusicStateById(id); } private String getListenBtnText(Music music, int state) { String btnText = ""; switch (state) { case 5:// 在本地 btnText = "在本地"; break; case 0:// 在云端 btnText = "在云端"; break; default:// 未购买 String price = music.getPrice(); if ("0".equals(price)) { btnText = getResources().getString(R.string.freeBtnText); } else { btnText = price + ".00 元"; } break; } return btnText; } public void onArtistItemClick(int position) { Artist artist = sdo.getArtists().get(position); // recordCurrentDataAndPosition(); // recycleNeeded = false; WatchDog.tabWebFragment.goArtistDetail(artist); } private void initExpandableListView() { adapter.setSdo(sdo); xlvResult.setAdapter(adapter); xlvResult.setGroupIndicator(null); for (int i = 0; i < adapter.getGroupCount(); i++) { xlvResult.expandGroup(i); } // firstVisibleItemPosition = xlvResult.getFirstVisiblePosition(); // xlvResult.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), true, true){ // // @Override // public void onScrollStateChanged(AbsListView view, int scrollState) { // if(scrollState == OnScrollListener.SCROLL_STATE_IDLE){ // if(xlvResult.getChildAt(0) != null){ // scrollTop = xlvResult.getChildAt(0).getTop(); // } // } // super.onScrollStateChanged(view, scrollState); // } // // }); } private void initLvAlbums() { albumAdapter.setList(sdo.getAlbums()); lvResultAlbums.setAdapter(albumAdapter); lvResultAlbums.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // UpnpApp.showToastMessage("show album detail"); onAlbumItemClick(position); } }); } private void initLvArtists() { artistAdapter.setList(sdo.getArtists()); lvResultArtists.setAdapter(artistAdapter); lvResultArtists.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { onArtistItemClick(position); } }); } private void initLvMusics() { // lvAddFooterView(lvResultMusics, Constant.SEARCH_TYPE_MUSICS); musicAdapter.setList(sdo.getMusics()); lvResultMusics.setAdapter(musicAdapter); lvResultMusics.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { onMusicItemClick(position); } }); } // private void lvAddFooterView(ListView listview, final int searchType) { // listview.addFooterView(footerView); // // tvLoadMore.setOnClickListener(new OnClickListener() { // @Override // public void onClick(View v) { // tvLoadMore.setVisibility(View.GONE); // llLoadingMore.setVisibility(View.VISIBLE); // isAddingData = true; // // // 获取更多数据 // getMoreData(searchType); // } // }); // } // protected void getMoreData(int searchType) { // Pools.executorService1.submit(new Runnable() { // // @Override // public void run() { // String json5 = new HttpPoster().search(keyword, Constant.SEARCH_TYPE_MUSICS, sdo.getMusics().size()); // System.out.println("json5=" + json5); // List<Music> musics = new JsonUtil().getSearchDataMusics(json5); // // sdo.getMusics().addAll(musics); // // Message msg = handler.obtainMessage(MSG_SHOW_ADDED_DATA); // msg.arg1 = musics.size(); // handler.sendMessage(msg); // } // }); // } private void checkIfDataLoadCompleted(int numItems) { if (numItems < HttpPoster.MAX_SEARCH_ITEM) { tvLoadMore.setText("加载完毕"); tvLoadMore.setEnabled(false); } } @Override public void onStop() { super.onStop(); WatchDog.tabWebFragment.useTitleStyle(TabWebFragment.TITLE_STYLE_NORMAL); } @Override public void onDestroyView() { Log.e("BUG913", TAG+" onDestroyView"); recordCurrentDataAndPosition(); super.onDestroyView(); } @Override public void onDetach() { Log.e("BUG913", TAG+" onDetach"); WatchDog.searchResultFragmentRunning = false; WatchDog.tabWebFragment.hideSoftInput(); unregisterReceivers(); recycleAllBitmaps(); super.onDetach(); } /* 离开页面或重新搜索时,释放所有图片资源 */ private void recycleAllBitmaps() { System.out.println(TAG + "recycleAllBitmaps"); System.out.println(TAG + "bitmaps.size()=" + bitmaps.size()); for (Bitmap bitmap : bitmaps) { bitmap.recycle(); } bitmaps.clear(); WatchDog.selectedSearchResultTabText = ""; } private void unregisterReceivers() { } public void recordCurrentDataAndPosition() { Log.e("BUG913", TAG+" recordCurrentDataAndPosition"); WatchDog.sdoInSearchResult = sdo; // WatchDog.fvipInSearchResult = firstVisibleItemPosition; // WatchDog.stInSearchResult = scrollTop; WatchDog.listviewPositionMap.put(TAG, lpRecorder); WatchDog.keywordInSearchResult = keyword; WatchDog.flagInSearchResult = true; // Log.e("BUG913", TAG+" WatchDog.fvipInSearchResult="+WatchDog.fvipInSearchResult); // Log.e("BUG913", TAG+" WatchDog.stInSearchResult="+WatchDog.stInSearchResult); Log.e("BUG913", TAG+" lpRecorder="+lpRecorder); } public void getSavedDataAndPosition() { Log.e("BUG913", TAG+" getSavedDataAndPosition"); sdo = WatchDog.sdoInSearchResult; // firstVisibleItemPosition = WatchDog.fvipInSearchResult; // scrollTop = WatchDog.stInSearchResult; // Log.e("BUG913", TAG+" WatchDog.fvipInSearchResult="+WatchDog.fvipInSearchResult); // Log.e("BUG913", TAG+" WatchDog.stInSearchResult="+WatchDog.stInSearchResult); } public void setSdo(SearchDataObject sdo) { this.sdo = sdo; } public SearchDataObject getSdo() { return sdo; } public void update() { // 先清空当前图片 Set<Bitmap> bmps = bitmaps; bitmaps.clear(); // 初始化新的数据 adapter.setSdo(sdo); albumAdapter.setList(sdo.getAlbums()); musicAdapter.setList(sdo.getMusics()); artistAdapter.setList(sdo.getArtists()); // adapter.notifyDataSetChanged(); // albumAdapter.notifyDataSetChanged(); // musicAdapter.notifyDataSetChanged(); // artistAdapter.notifyDataSetChanged(); // 选中所有 for (TextView underline : tabUnderlines) { if (underline == tabAllSelected) { underline.setVisibility(View.VISIBLE); } else { underline.setVisibility(View.INVISIBLE); } } showTabAll(); // 回收旧图片 for (Bitmap bitmap : bmps) { bitmap.recycle(); } System.gc();// 旧的adapter可以回收了 } public void showSearchLoading() { // 显示内容布局 llFace.setVisibility(View.GONE); llLoading.setVisibility(View.VISIBLE); llContent.setVisibility(View.GONE); llHistory.setVisibility(View.GONE); // 载入动画资源 if (ad == null) { ad = (AnimationDrawable) getResources().getDrawable(R.anim.animatior_list); } llLoading.findViewById(R.id.iv_loading).setBackgroundDrawable(ad); ad.start(); } public void showSearchResult() { // 显示内容布局 llFace.setVisibility(View.GONE); llLoading.setVisibility(View.GONE); llContent.setVisibility(View.VISIBLE); llHistory.setVisibility(View.GONE); // 结束动画 if (ad != null && ad.isRunning()) { ad.stop(); ad = null; } // 初始化数据 adapter.setSdo(sdo); albumAdapter.setList(sdo.getAlbums()); musicAdapter.setList(sdo.getMusics()); artistAdapter.setList(sdo.getArtists()); // 选中当前 for (TextView underline : tabUnderlines) { if (underline == tabAllSelected) { underline.setVisibility(View.VISIBLE); } else { underline.setVisibility(View.INVISIBLE); } } showTabAll(); } @Override public void updateTitlebar() { WatchDog.tabWebFragment.setPopbackable(true); WatchDog.tabWebFragment.setTitle("搜索结果"); WatchDog.tabWebFragment.currentMenuItem = "搜索结果"; WatchDog.tabWebFragment.initEtSearch(); WatchDog.tabWebFragment.clearEtSearch(); } public void setKeyword(String keyword) { this.keyword = keyword; } @Override public void reload() { System.out.println(TAG+"reloading..."); WatchDog.tabWebFragment.search(); } @Override public void onDataLoadFailed() { handler.sendEmptyMessage(MSG_DATA_LOAD_FAILD); } private void showLlFace() { System.out.println("showLlFace"); llFace.setVisibility(View.VISIBLE); llLoading.setVisibility(View.GONE); llContent.setVisibility(View.GONE); llHistory.setVisibility(View.GONE); } public void showHistory(String input) { Log.e("BUG959", TAG+"showHistory"); llFace.setVisibility(View.GONE); llLoading.setVisibility(View.GONE); llContent.setVisibility(View.GONE); llHistory.setVisibility(View.VISIBLE); llHistory.removeAllViews(); getSearchHistory(input); llHistory.addView(historyView); } private void getSearchHistory(String input) { //拿到历史记录 final ArrayList<String> historyList=createHistoryList(input); historyAdapter.setHistoryList(historyList); historyAdapter.notifyDataSetChanged(); //实现ITEM点击监听:将点击条目输送到文本框 lvHistory.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { String str = historyList.get(position); WatchDog.tabWebFragment.setEtText(str); } }); } private ArrayList<String> createHistoryList(String input) { ArrayList<String> arrayList=new SearchHistoryDao().getSearchHistory(input,Constant.SEARCH_HISTORY_ITEMS_SHOWN); // arrayList.add("刘德华"); // arrayList.add("张学友"); // arrayList.add("周杰伦"); // arrayList.add("eagles"); return arrayList; } protected void clearSearchHistory() { Log.e("BUG956", TAG+"clearSearchHistory"); historyAdapter.getHistoryList().clear(); historyAdapter.notifyDataSetChanged(); new SearchHistoryDao().clearclearSearchHistory(); } }