package com.pps.fragment; import java.io.File; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import android.app.ProgressDialog; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.view.View.OnKeyListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.GridView; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import com.pps.activity.R; import com.pps.adapter.MyListAdapter; import com.pps.adapter.MyListGridAdapter; import com.pps.adapter.MyPopupWinAdapter; import com.pps.commom.MemoryStatus; import com.pps.custom.anim.MyAnimation; import com.pps.db.service.ChannelListServiceInterface; import com.pps.db.service.imp.ChannelListServiceImp; import com.pps.model.SubModel; import com.pps.utils.ArraysUtils; import com.pps.utils.DownXML; import com.pps.utils.JudgeNetwork; import com.pps.utils.ZipToFile; import com.pps.xmlparser.ListXMLContentHandler; /** * 影视列表的界面 * * @author jiangqingqing * @time 2013/09 * */ public class MyListFragment extends Fragment { private ImageButton btn_ic_title_menu; private Button btn_top_grid_list; private Button btn_bkg_poster_cover; private Button btn_list_hot; private Button btn_list_new; private Button btn_list_score; private Button btn_list_letter; private EditText et_search; private LinearLayout list_grid_linear; private ListView lv_list; private GridView gv_list; private static List<SubModel> mLists; // 静态节目默认列表数据 private static List<SubModel> mListsByHot; // 最热的列表 private static List<SubModel> mListsByNew; // 最新列表 private static List<SubModel> mListsByVm;// 按照评分列表 private static List<SubModel> mListsByLetter;// 按照字母排序列表 private static boolean isHot = false; private static boolean isNew = false; private static boolean isVm = false; private static boolean isLetter = false; private boolean isShift = false; // 是否为筛选 默认是正常 //private boolean isSearch = false; // 是否为搜索 默认是正常 private List<SubModel> mSearchModels; private List<SubModel> mShiftLists; // 经过筛选过的列表对象 private MyListAdapter listAdapter; private MyListGridAdapter gridAdapter; public static ProgressDialog mProgressDialog; private ProgressDialog mSortProgressDialog; private View mView; private Context mContext; private boolean isClick = false;// 控制表格与列表切换按钮 // 默认isClick=false(列表),isClick=true(表格) // PopupWindow弹出框进行显示所需要的各种参数 private PopupWindow mPopupWindow; private MyPopupWinAdapter myPopupWinAdapter; private ListView lv_popwindow; private TextView tv_popupwindow_type; private TextView tv_popupwindow_year; private TextView tv_popupwindow_letter; private View mPopupWindowView; private LayoutInflater mLayoutInflater; private String[] mStrs;// 显示类型,年份,字母的数组 private View loadView; // 点击加载更多 private ProgressBar load_progress; private Button load_btn; private int maxSum = 0; private static final int LIST_FAIL = -1; // handler处理Message的标识 private static final int SHIF_TYPE = 3; private static final int SHIF_YEAR = 4; private static final int SHIF_LETTER = 5; private static final int SEARCH_ALL = 6; private static final int SORT_HOT=7; private static final int SORT_NEW=8; private static final int SORT_VOTE=9; private static final int SORT_LETTER=10; private boolean isUseCache = false; private InputMethodManager imm; private static final String TAG = "jiangqq"; private Handler mHandler = new Handler() { @SuppressWarnings("unchecked") @Override public void handleMessage(Message msg) { switch (msg.what) { case LIST_FAIL: if (mProgressDialog != null) { mProgressDialog.dismiss(); } Toast.makeText(mContext, "无网络连接,请设置网络或者稍后访问.", Toast.LENGTH_SHORT).show(); break; case 1: // 获取到全部数据 mLists = (List<SubModel>) msg.obj; // 关闭进度框 if (mProgressDialog != null) { mProgressDialog.dismiss(); } // 设置点击标签位置 isHot = true; isNew = false; isVm = false; isLetter = false; if (isUseCache) { // 刷新数据 refreshData(); Log.v(TAG, "刷新列表数据文件..."); } else { } // 默认是在最新标签 listAdapter = new MyListAdapter(mListsByHot, mContext, getActivity()); lv_list.setAdapter(listAdapter); break; case 2: if (mProgressDialog != null) { mProgressDialog.dismiss(); } if (mListsByHot == null) { mListsByHot = sortByHot(mLists); } // 返回回来也是同样直接显示最热的 // 设置点击标签位置 isHot = true; isNew = false; isVm = false; isLetter = false; listAdapter = new MyListAdapter(mListsByHot, mContext, getActivity()); lv_list.setAdapter(listAdapter); break; case SHIF_TYPE: // 筛选类型 if (mPopupWindow != null && mPopupWindow.isShowing()) { mPopupWindow.dismiss(); } mShiftLists = (List<SubModel>) msg.obj; // 进行重新加载视图 if (isClick) { // 表格 if (isHot) { gridAdapter = new MyListGridAdapter( sortByHot(mShiftLists), mContext, getActivity()); } else if (isNew) { gridAdapter = new MyListGridAdapter( sortByNew(mShiftLists), mContext, getActivity()); } else if (isVm) { gridAdapter = new MyListGridAdapter( sortByVm(mShiftLists), mContext, getActivity()); } else if (isLetter) { gridAdapter = new MyListGridAdapter( sortByLetter(mShiftLists), mContext, getActivity()); } gv_list.setAdapter(gridAdapter); } else { if (isHot) { listAdapter = new MyListAdapter(sortByHot(mShiftLists), mContext, getActivity()); } else if (isNew) { listAdapter = new MyListAdapter(sortByNew(mShiftLists), mContext, getActivity()); } else if (isVm) { listAdapter = new MyListAdapter(sortByNew(mShiftLists), mContext, getActivity()); } else if (isLetter) { listAdapter = new MyListAdapter( sortByLetter(mShiftLists), mContext, getActivity()); } lv_list.setAdapter(listAdapter); } isShift = true;// 筛选成功,设置标志位 break; case SHIF_YEAR: // 筛选年份 if (mPopupWindow != null && mPopupWindow.isShowing()) { mPopupWindow.dismiss(); } mShiftLists = (List<SubModel>) msg.obj; // 进行重新加载视图 if (isClick) { // 表格 if (isHot) { gridAdapter = new MyListGridAdapter( sortByHot(mShiftLists), mContext, getActivity()); } else if (isNew) { gridAdapter = new MyListGridAdapter( sortByNew(mShiftLists), mContext, getActivity()); } else if (isVm) { gridAdapter = new MyListGridAdapter( sortByVm(mShiftLists), mContext, getActivity()); } else if (isLetter) { gridAdapter = new MyListGridAdapter( sortByLetter(mShiftLists), mContext, getActivity()); } gv_list.setAdapter(gridAdapter); } else { if (isHot) { listAdapter = new MyListAdapter(sortByHot(mShiftLists), mContext, getActivity()); } else if (isNew) { listAdapter = new MyListAdapter(sortByNew(mShiftLists), mContext, getActivity()); } else if (isVm) { listAdapter = new MyListAdapter(sortByNew(mShiftLists), mContext, getActivity()); } else if (isLetter) { listAdapter = new MyListAdapter( sortByLetter(mShiftLists), mContext, getActivity()); } lv_list.setAdapter(listAdapter); } isShift = true;// 筛选成功,设置标志位 break; case SHIF_LETTER: // 筛选字母 if (mPopupWindow != null && mPopupWindow.isShowing()) { mPopupWindow.dismiss(); } mShiftLists = (List<SubModel>) msg.obj; // 进行重新加载视图 if (isClick) { // 表格 if (isHot) { gridAdapter = new MyListGridAdapter( sortByHot(mShiftLists), mContext, getActivity()); } else if (isNew) { gridAdapter = new MyListGridAdapter( sortByNew(mShiftLists), mContext, getActivity()); } else if (isVm) { gridAdapter = new MyListGridAdapter( sortByVm(mShiftLists), mContext, getActivity()); } else if (isLetter) { gridAdapter = new MyListGridAdapter( sortByLetter(mShiftLists), mContext, getActivity()); } gv_list.setAdapter(gridAdapter); } else { if (isHot) { listAdapter = new MyListAdapter(sortByHot(mShiftLists), mContext, getActivity()); } else if (isNew) { listAdapter = new MyListAdapter(sortByNew(mShiftLists), mContext, getActivity()); } else if (isVm) { listAdapter = new MyListAdapter(sortByNew(mShiftLists), mContext, getActivity()); } else if (isLetter) { listAdapter = new MyListAdapter( sortByLetter(mShiftLists), mContext, getActivity()); } lv_list.setAdapter(listAdapter); } isShift = true;// 筛选成功,设置标志位 break; case SEARCH_ALL: // 搜索数据 mSearchModels = (List<SubModel>) msg.obj; listAdapter.setmLists(mSearchModels); lv_list.setAdapter(listAdapter); break; case SORT_HOT: if(mSortProgressDialog!=null&&mSortProgressDialog.isShowing()) { mSortProgressDialog.dismiss(); } Log.v(TAG, "最热排序成功."); mListsByHot=(List<SubModel>)msg.obj; if (isShift) { // 筛选过 if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter( sortByHot(mShiftLists), mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter( sortByHot(mShiftLists), mContext, getActivity()); lv_list.setAdapter(listAdapter); } } else { if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter(mListsByHot, mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter(mListsByHot, mContext, getActivity()); lv_list.setAdapter(listAdapter); } } break; case SORT_NEW: if(mSortProgressDialog!=null&&mSortProgressDialog.isShowing()) { mSortProgressDialog.dismiss(); } Log.v(TAG, "最新排序成功."); mListsByNew=(List<SubModel>)msg.obj; if (isShift) { // 筛选过 if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter( sortByNew(mShiftLists), mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter( sortByNew(mShiftLists), mContext, getActivity()); lv_list.setAdapter(listAdapter); } } else { if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter(mListsByNew, mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter(mListsByNew, mContext, getActivity()); lv_list.setAdapter(listAdapter); } } break; case SORT_VOTE: if(mSortProgressDialog!=null&&mSortProgressDialog.isShowing()) { mSortProgressDialog.dismiss(); } Log.v(TAG, "评分排序成功."); mListsByVm=(List<SubModel>)msg.obj; if (isShift) { // 筛选过 if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter( sortByVm(mShiftLists), mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter( sortByVm(mShiftLists), mContext, getActivity()); lv_list.setAdapter(listAdapter); } } else { if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter(mListsByVm, mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter(mListsByVm, mContext, getActivity()); lv_list.setAdapter(listAdapter); } } break; case SORT_LETTER: if(mSortProgressDialog!=null&&mSortProgressDialog.isShowing()) { mSortProgressDialog.dismiss(); } Log.v(TAG, "字母排序成功."); mListsByLetter=(List<SubModel>)msg.obj; if (isShift) { // 筛选 if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter( sortByLetter(mShiftLists), mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter( sortByLetter(mShiftLists), mContext, getActivity()); lv_list.setAdapter(listAdapter); } } else { if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter(mListsByLetter, mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter(mListsByLetter, mContext, getActivity()); lv_list.setAdapter(listAdapter); } } break; } super.handleMessage(msg); } }; /* * (non-Javadoc) 进行加载视图等工作 * * @see * android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, * android.view.ViewGroup, android.os.Bundle) */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (mView == null) { mView = inflater.inflate(R.layout.fragment_list, container, false); initView(); initVariable(); // 直接弹出进度框,去后台下载数据 mProgressDialog = new ProgressDialog(mContext); mProgressDialog.setMessage("正在加载...."); // mProgressDialog.setCancelable(false); mProgressDialog.show(); Thread thread = new Thread(runnable_id); thread.start(); bindData(); initListeners(); } return mView; } // 初始化变量 private void initVariable() { mContext = mView.getContext(); // 进行筛选,弹出PopupWindow mLayoutInflater = LayoutInflater.from(mContext); mPopupWindowView = mLayoutInflater.inflate( R.layout.fragment_list_popupwindow, null); mPopupWindowView.setFocusable(true); mPopupWindowView.setFocusableInTouchMode(true); // 监听返回键,进行dismiss()掉popupwindow mPopupWindowView.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) { if (mPopupWindow.isShowing()) { mPopupWindow.dismiss(); } } return false; } }); // 获取该加载出来view中的控件; lv_popwindow = (ListView) mPopupWindowView .findViewById(R.id.lv_popwindow); tv_popupwindow_type = (TextView) mPopupWindowView .findViewById(R.id.tv_popupwindow_type); tv_popupwindow_year = (TextView) mPopupWindowView .findViewById(R.id.tv_popupwindow_year); tv_popupwindow_letter = (TextView) mPopupWindowView .findViewById(R.id.tv_popupwindow_letter); mStrs = getResources().getStringArray(R.array.array_type_item); loadView = mLayoutInflater.inflate(R.layout.loadmore, null);// 进行inflate出更多的视图 load_progress = (ProgressBar) loadView.findViewById(R.id.load_progress); load_btn = (Button) loadView.findViewById(R.id.load_btn); load_btn.setOnClickListener(new MySetOnClickListener()); // lv_list.addFooterView(loadView); //把加载更多的视图,加入到listViw的底部 } private void initView() { btn_ic_title_menu = (ImageButton) mView .findViewById(R.id.btn_ic_title_menu); //默认让title获取到焦点 btn_ic_title_menu.requestFocus(); btn_ic_title_menu.setBackgroundResource(0);// 去掉背景 btn_top_grid_list = (Button) mView.findViewById(R.id.btn_top_grid_list); // btn_top_grid_list.setBackgroundResource(0);//去掉背景 btn_bkg_poster_cover = (Button) mView .findViewById(R.id.btn_bkg_poster_cover); btn_list_hot = (Button) mView.findViewById(R.id.btn_list_hot); btn_list_new = (Button) mView.findViewById(R.id.btn_list_new); btn_list_score = (Button) mView.findViewById(R.id.btn_list_score); btn_list_letter = (Button) mView.findViewById(R.id.btn_list_letter); lv_list = (ListView) mView.findViewById(R.id.lv_list); gv_list = (GridView) mView.findViewById(R.id.gv_list); list_grid_linear = (LinearLayout) mView .findViewById(R.id.list_grid_linear); et_search = (EditText) mView.findViewById(R.id.et_search); et_search.clearFocus(); imm = (InputMethodManager) et_search.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(et_search.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } private void bindData() { } /** * 初始化,进行监听 */ private void initListeners() { // btn_ic_title_menu.setOnClickListener(new MySetOnClickListener()); btn_ic_title_menu.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { getActivity().onKeyDown(KeyEvent.KEYCODE_BACK, null); } }); btn_top_grid_list.setOnClickListener(new MySetOnClickListener()); btn_bkg_poster_cover.setOnClickListener(new MySetOnClickListener()); btn_list_hot.setOnClickListener(new MySetOnClickListener()); btn_list_new.setOnClickListener(new MySetOnClickListener()); btn_list_score.setOnClickListener(new MySetOnClickListener()); btn_list_letter.setOnClickListener(new MySetOnClickListener()); lv_list.setOnItemClickListener(new MyOnItemClickListener()); gv_list.setOnItemClickListener(new MyOnItemClickListener()); tv_popupwindow_type.setOnClickListener(new MySetOnClickListener()); tv_popupwindow_year.setOnClickListener(new MySetOnClickListener()); tv_popupwindow_letter.setOnClickListener(new MySetOnClickListener()); et_search.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { imm.hideSoftInputFromWindow(et_search.getWindowToken(), 0); } else { imm.hideSoftInputFromWindow(et_search.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } } }); et_search.addTextChangedListener(new TextWatcher() { /* * (non-Javadoc) * * @see * android.text.TextWatcher#onTextChanged(java.lang.CharSequence, * int, int, int) */ @Override public void onTextChanged(CharSequence s, int start, int before, int count) { Log.v(TAG, "搜索的内容是:" + s); if (s.toString().equals("")) { mHandler.obtainMessage(SEARCH_ALL, mLists).sendToTarget(); } else { new MySearcheListTask(mLists).execute(String.valueOf(s)); } } /* * (non-Javadoc) * * @see * android.text.TextWatcher#beforeTextChanged(java.lang.CharSequence * , int, int, int) */ @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } /* * (non-Javadoc) * * @see * android.text.TextWatcher#afterTextChanged(android.text.Editable) */ @Override public void afterTextChanged(Editable s) { } }); } /* * 自定义按钮点击事件 */ class MySetOnClickListener implements OnClickListener { @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_ic_title_menu: break; case R.id.btn_top_grid_list: // 进行节目的表格与列表的切换 if (!isClick) { // 切换成表格,并且设置标志为true lv_list.setVisibility(View.GONE); if (isShift) { // 筛选过 if (isHot) { gridAdapter = new MyListGridAdapter( sortByHot(mShiftLists), mContext, getActivity()); } else if (isNew) { gridAdapter = new MyListGridAdapter( sortByNew(mShiftLists), mContext, getActivity()); } else if (isVm) { gridAdapter = new MyListGridAdapter( sortByVm(mShiftLists), mContext, getActivity()); } else if (isLetter) { gridAdapter = new MyListGridAdapter( sortByLetter(mShiftLists), mContext, getActivity()); } } else { // 没有经过筛选 if (isHot) { if (mListsByHot == null) { mListsByHot = sortByHot(mLists); } gridAdapter = new MyListGridAdapter(mListsByHot, mContext, getActivity()); } else if (isNew) { if (mListsByNew == null) { mListsByNew = sortByNew(mLists); } gridAdapter = new MyListGridAdapter(mListsByNew, mContext, getActivity()); } else if (isVm) { if (mListsByVm == null) { mListsByVm = sortByVm(mLists); } gridAdapter = new MyListGridAdapter(mListsByVm, mContext, getActivity()); } else if (isLetter) { if (mListsByLetter == null) { mListsByLetter = sortByLetter(mLists); } gridAdapter = new MyListGridAdapter(mListsByLetter, mContext, getActivity()); } } gv_list.setAdapter(gridAdapter); btn_top_grid_list .setBackgroundResource(R.drawable.icon_top_list); gv_list.setVisibility(View.VISIBLE); list_grid_linear.setAnimation(new MyAnimation()); isClick = true; } else { // 切换成列表,并且设置标志位false lv_list.setVisibility(View.VISIBLE); if (isShift) { // 筛选过 if (isHot) { listAdapter = new MyListAdapter( sortByHot(mShiftLists), mContext, getActivity()); } else if (isNew) { listAdapter = new MyListAdapter( sortByNew(mShiftLists), mContext, getActivity()); } else if (isVm) { listAdapter = new MyListAdapter( sortByVm(mShiftLists), mContext, getActivity()); } else if (isShift) { listAdapter = new MyListAdapter( sortByLetter(mShiftLists), mContext, getActivity()); } } else { // 没有筛选 if (isHot) { if (mListsByHot == null) { mListsByHot = sortByHot(mLists); } listAdapter = new MyListAdapter(mListsByHot, mContext, getActivity()); } else if (isNew) { if (mListsByNew == null) { mListsByNew = sortByNew(mLists); } listAdapter = new MyListAdapter(mListsByNew, mContext, getActivity()); } else if (isVm) { if (mListsByVm == null) { mListsByVm = sortByVm(mLists); } listAdapter = new MyListAdapter(mListsByVm, mContext, getActivity()); } else if (isLetter) { if (mListsByLetter == null) { mListsByLetter = sortByLetter(mLists); } listAdapter = new MyListAdapter(mListsByLetter, mContext, getActivity()); } } lv_list.setAdapter(listAdapter); btn_top_grid_list .setBackgroundResource(R.drawable.icon_top_grid); gv_list.setVisibility(View.GONE); list_grid_linear.setAnimation(new MyAnimation()); isClick = false; } break; case R.id.btn_bkg_poster_cover: // listview进行绑定数据 myPopupWinAdapter = new MyPopupWinAdapter(mContext, mStrs); lv_popwindow.setAdapter(myPopupWinAdapter); lv_popwindow .setOnItemClickListener(new MyPopWindowTypeItemClickListener( mStrs)); mPopupWindow = new PopupWindow(mPopupWindowView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true); mPopupWindow.setFocusable(true); mPopupWindow.setTouchable(true); mPopupWindow.setOutsideTouchable(true); // 点击让Popupwindowd点击外面可以消失掉 mPopupWindow.setBackgroundDrawable(new ColorDrawable(0)); if (!mPopupWindow.isShowing()) { // 显示进行PopupWindow mPopupWindow.showAsDropDown(btn_bkg_poster_cover, 0, 0); } else { mPopupWindow.dismiss(); } break; case R.id.btn_list_hot: // 最热 if (null != mLists) { // 设置标志位 isHot = true; isNew = false; isVm = false; isLetter = false; btn_list_hot.setBackgroundResource(R.drawable.tab_bar_sel); btn_list_new.setBackgroundResource(R.drawable.tab_bar); btn_list_score.setBackgroundResource(R.drawable.tab_bar); btn_list_letter.setBackgroundResource(R.drawable.tab_bar); if (mListsByHot == null) { mSortProgressDialog=new ProgressDialog(mContext); mSortProgressDialog.setMessage("正在加载..."); mSortProgressDialog.show(); new Thread(new Runnable() { @Override public void run() { List<SubModel> tempSubModels=sortByHot(mLists); mHandler.obtainMessage(SORT_HOT, tempSubModels).sendToTarget(); } }).start(); return ; } if (isShift) { // 筛选过 if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter( sortByHot(mShiftLists), mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter( sortByHot(mShiftLists), mContext, getActivity()); lv_list.setAdapter(listAdapter); } } else { if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter(mListsByHot, mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter(mListsByHot, mContext, getActivity()); lv_list.setAdapter(listAdapter); } } } break; case R.id.btn_list_new: // 最新 if (null != mLists) { // 设置标志位 isHot = false; isNew = true; isVm = false; isLetter = false; btn_list_hot.setBackgroundResource(R.drawable.tab_bar); btn_list_new.setBackgroundResource(R.drawable.tab_bar_sel); btn_list_score.setBackgroundResource(R.drawable.tab_bar); btn_list_letter.setBackgroundResource(R.drawable.tab_bar); if (mListsByNew == null) { mSortProgressDialog=new ProgressDialog(mContext); mSortProgressDialog.setMessage("正在加载..."); mSortProgressDialog.show(); new Thread(new Runnable() { @Override public void run() { List<SubModel> tempSubModels=sortByNew(mLists); mHandler.obtainMessage(SORT_NEW, tempSubModels).sendToTarget(); } }).start(); return ; } if (isShift) { // 筛选过 if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter( sortByNew(mShiftLists), mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter( sortByNew(mShiftLists), mContext, getActivity()); lv_list.setAdapter(listAdapter); } } else { if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter(mListsByNew, mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter(mListsByNew, mContext, getActivity()); lv_list.setAdapter(listAdapter); } } } break; case R.id.btn_list_score: // 评分 if (null != mLists) { // 设置标志位 isHot = false; isNew = false; isVm = true; isLetter = false; btn_list_hot.setBackgroundResource(R.drawable.tab_bar); btn_list_new.setBackgroundResource(R.drawable.tab_bar); btn_list_score.setBackgroundResource(R.drawable.tab_bar_sel); btn_list_letter.setBackgroundResource(R.drawable.tab_bar); if (mListsByVm == null) { mSortProgressDialog=new ProgressDialog(mContext); mSortProgressDialog.setMessage("正在加载..."); mSortProgressDialog.show(); new Thread(new Runnable() { @Override public void run() { List<SubModel> tempSubModels=sortByVm(mLists); mHandler.obtainMessage(SORT_VOTE, tempSubModels).sendToTarget(); } }).start(); return ; } if (isShift) { // 筛选过 if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter( sortByVm(mShiftLists), mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter( sortByVm(mShiftLists), mContext, getActivity()); lv_list.setAdapter(listAdapter); } } else { if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter(mListsByVm, mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter(mListsByVm, mContext, getActivity()); lv_list.setAdapter(listAdapter); } } } break; case R.id.btn_list_letter: // 字母 if (null != mLists) { // 设置标志位 isHot = false; isNew = false; isVm = false; isLetter = true; btn_list_hot.setBackgroundResource(R.drawable.tab_bar); btn_list_new.setBackgroundResource(R.drawable.tab_bar); btn_list_score.setBackgroundResource(R.drawable.tab_bar); btn_list_letter.setBackgroundResource(R.drawable.tab_bar_sel); if (mListsByLetter == null) { mSortProgressDialog=new ProgressDialog(mContext); mSortProgressDialog.setMessage("正在加载..."); mSortProgressDialog.show(); new Thread(new Runnable() { @Override public void run() { List<SubModel> tempSubModels=sortByLetter(mLists); mHandler.obtainMessage(SORT_LETTER, tempSubModels).sendToTarget(); } }).start(); return; } if (isShift) { // 筛选 if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter( sortByLetter(mShiftLists), mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter( sortByLetter(mShiftLists), mContext, getActivity()); lv_list.setAdapter(listAdapter); } } else { if (isClick) { // 在表格视图下 gridAdapter = new MyListGridAdapter(mListsByLetter, mContext, getActivity()); gv_list.setAdapter(gridAdapter); } else { // 列表情况 listAdapter = new MyListAdapter(mListsByLetter, mContext, getActivity()); lv_list.setAdapter(listAdapter); } } } break; case R.id.tv_popupwindow_type: // 根据类型显示筛选视频 mStrs = getResources().getStringArray(R.array.array_type_item); myPopupWinAdapter = new MyPopupWinAdapter(mContext, mStrs); lv_popwindow.setAdapter(myPopupWinAdapter); lv_popwindow .setOnItemClickListener(new MyPopWindowTypeItemClickListener( mStrs)); break; case R.id.tv_popupwindow_year: // 根据年份显示筛选视频 mStrs = getResources().getStringArray(R.array.array_year_item); myPopupWinAdapter = new MyPopupWinAdapter(mContext, mStrs); lv_popwindow.setAdapter(myPopupWinAdapter); lv_popwindow .setOnItemClickListener(new MyPopWindowYearItemClickListener( mStrs)); break; case R.id.tv_popupwindow_letter: // 根据字母显示筛选视频 mStrs = getResources() .getStringArray(R.array.array_letter_item); myPopupWinAdapter = new MyPopupWinAdapter(mContext, mStrs); lv_popwindow.setAdapter(myPopupWinAdapter); lv_popwindow .setOnItemClickListener(new MyPopWindowLetterItemClickListener( mStrs)); break; case R.id.load_btn: // 进行加载更多 load_btn.setVisibility(View.GONE); load_progress.setVisibility(View.VISIBLE); mHandler.postDelayed(new Runnable() { @Override public void run() { loadMore(); // 记载更多数据 load_btn.setVisibility(View.VISIBLE); load_progress.setVisibility(View.GONE); listAdapter.notifyDataSetChanged(); // 通知ListView进行刷新数据 } }, 1000); break; } } } /* * 自定义列表点击事件 */ class MyOnItemClickListener implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { // 点击列表Item进入详情页面 FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager .beginTransaction(); MyDetailFragment detailFragment = new MyDetailFragment(); Bundle bundle = new Bundle(); int index = 0; if (isShift) { // 筛选 if (isHot) { List<SubModel> tempModels = sortByHot(mShiftLists); index = tempModels.get(position).getId(); Log.v(TAG, "点击了剧情为:" + tempModels.get(position).getName() + ",ID:" + tempModels.get(position).getId()); } else if (isNew) { List<SubModel> tempModels = sortByNew(mShiftLists); index = tempModels.get(position).getId(); Log.v(TAG, "点击了剧情为:" + tempModels.get(position).getName() + ",ID:" + tempModels.get(position).getId()); } else if (isVm) { List<SubModel> tempModels = sortByVm(mShiftLists); index = tempModels.get(position).getId(); Log.v(TAG, "点击了剧情为:" + tempModels.get(position).getName() + ",ID:" + tempModels.get(position).getId()); } else if (isLetter) { List<SubModel> tempModels = sortByVm(mShiftLists); index = tempModels.get(position).getId(); Log.v(TAG, "点击了剧情为:" + tempModels.get(position).getName() + ",ID:" + tempModels.get(position).getId()); } } else { // 无筛选 if (isHot) { index = mListsByHot.get(position).getId(); Log.v(TAG, "点击了剧情为:" + mListsByHot.get(position).getName() + ",ID:" + mListsByHot.get(position).getId()); } else if (isNew) { index = mListsByNew.get(position).getId(); Log.v(TAG, "点击了剧情为:" + mListsByNew.get(position).getName() + ",ID:" + mListsByNew.get(position).getId()); } else if (isVm) { index = mListsByVm.get(position).getId(); Log.v(TAG, "点击了剧情为:" + mListsByVm.get(position).getName() + ",ID:" + mListsByVm.get(position).getId()); } else if (isLetter) { index = mListsByLetter.get(position).getId(); Log.v(TAG, "点击了剧情为:" + mListsByLetter.get(position).getName() + ",ID:" + mListsByLetter.get(position).getId()); } } bundle.putInt("sub_id", index); detailFragment.setArguments(bundle); transaction.replace(R.id.container_details, detailFragment); transaction.addToBackStack(null); transaction.commit(); } } /* * 根据类型进行筛选列表 */ class MyPopWindowTypeItemClickListener implements OnItemClickListener { private String[] mTypeCompare; public MyPopWindowTypeItemClickListener(String[] pTypeCompare) { this.mTypeCompare = pTypeCompare; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { new MyTypeListTask(mLists).execute(mTypeCompare[position]); Log.v(TAG, "点击了:" + mTypeCompare[position]); } } /* * 根据年份进行筛选列表 */ class MyPopWindowYearItemClickListener implements OnItemClickListener { private String[] mYearCompare; public MyPopWindowYearItemClickListener(String[] pYearCompare) { this.mYearCompare = pYearCompare; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { new MyYearListTask(mLists).execute(mYearCompare[position]); // 刷新列表 } } /* * 根据字母进行筛选列表 */ class MyPopWindowLetterItemClickListener implements OnItemClickListener { private String[] mLetterCompare; public MyPopWindowLetterItemClickListener(String[] pLetterCompare) { this.mLetterCompare = pLetterCompare; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { new MyLetterListTask(mLists).execute(mLetterCompare[position]); } } /* * 根据类型进行筛选 */ class MyTypeListTask extends AsyncTask<String, Integer, List<SubModel>> { private List<SubModel> mSubModels; public MyTypeListTask(List<SubModel> pSubModels) { this.mSubModels = pSubModels; } @Override protected List<SubModel> doInBackground(String... params) { String compareStr = params[0]; List<SubModel> tempSubModels = new ArrayList<SubModel>(); for (SubModel subModel : mSubModels) { // String[] compare=subModel.getTp().trim().split(","); // int length=compare.length; if (subModel.getTp().trim().indexOf(compareStr.trim()) > 0) { tempSubModels.add(subModel); } } return tempSubModels; } /* * (non-Javadoc) * * @see android.os.AsyncTask#onPostExecute(java.lang.Object) */ @Override protected void onPostExecute(List<SubModel> result) { mHandler.obtainMessage(SHIF_TYPE, result).sendToTarget(); super.onPostExecute(result); } } /* * 异步任务进行获取相应的年份列表 */ class MyYearListTask extends AsyncTask<String, Integer, List<SubModel>> { private List<SubModel> mSubModels; public MyYearListTask(List<SubModel> pSubModels) { this.mSubModels = pSubModels; } /* * (non-Javadoc) 异步后台执行任务 * * @see android.os.AsyncTask#doInBackground(Params[]) */ @Override protected List<SubModel> doInBackground(String... params) { String compareStr = params[0]; List<SubModel> tempSubModels = new ArrayList<SubModel>(); for (SubModel subModel : mSubModels) { if (null != subModel.getSearch()) { if (subModel.getSearch().getPt().equals(compareStr.trim())) { tempSubModels.add(subModel); } } } return tempSubModels; } /* * (non-Javadoc) * * @see android.os.AsyncTask#onPostExecute(java.lang.Object) */ @Override protected void onPostExecute(List<SubModel> result) { // 发送消息,使用handler进行统一处理 mHandler.obtainMessage(SHIF_TYPE, result).sendToTarget(); super.onPostExecute(result); } } /* * 根据字母进行筛选 */ class MyLetterListTask extends AsyncTask<String, Integer, List<SubModel>> { private List<SubModel> mSubModels; public MyLetterListTask(List<SubModel> pSubModels) { this.mSubModels = pSubModels; } @Override protected List<SubModel> doInBackground(String... params) { String compareStr = params[0]; List<SubModel> tempSubModels = new ArrayList<SubModel>(); for (SubModel subModel : mSubModels) { if (subModel.getLt().equals(compareStr.trim())) { tempSubModels.add(subModel); } } return tempSubModels; } /* * (non-Javadoc) * * @see android.os.AsyncTask#onPostExecute(java.lang.Object) */ @Override protected void onPostExecute(List<SubModel> result) { mHandler.obtainMessage(SHIF_LETTER, result).sendToTarget(); super.onPostExecute(result); } } /* * 异步进行搜索剧情 */ class MySearcheListTask extends AsyncTask<String, Integer, List<SubModel>> { private List<SubModel> mSubModels; public MySearcheListTask(List<SubModel> pSubModels) { this.mSubModels = pSubModels; } /* * (non-Javadoc) * * @see android.os.AsyncTask#doInBackground(Params[]) */ @Override protected List<SubModel> doInBackground(String... params) { String mStr = params[0]; return searchModels(mStr, mSubModels); } /* * (non-Javadoc) * * @see android.os.AsyncTask#onPostExecute(java.lang.Object) */ @Override protected void onPostExecute(List<SubModel> result) { mHandler.obtainMessage(SHIF_TYPE, result).sendToTarget(); super.onPostExecute(result); } } /** * 后台线程请求数据,并且进行数据的XML解析 */ Runnable runnable_id = new Runnable() { @Override public void run() { try { if (JudgeNetwork.isNetworkConnected(mContext)) { // 如果内存中有数据,那就直接进行显示 if (mLists != null && mLists.size() >= 0) { mHandler.obtainMessage(2, mLists).sendToTarget(); } else { // 内存中没有数据,进行下载解析 // a:首先进行判断是否sdcard中存在节目列表的xml文件 // b:如果存在直接进行解析,然后把数据放入到内存当中<->如果不存在那么去网络中进行下载节目列表zip包,进行解压缩,然后在放入到内存当中 if (MemoryStatus.externalMemoryAvailable()) { File file = new File("/sdcard/141.xml/141.xml"); if (file.exists()) { // 文件存在进行XML解析 Log.v(TAG, "使用本地缓存文件进行解析..."); isUseCache = true; InputStream inputStream = DownXML .getXMLFromFile(file); SAXParserFactory spf = SAXParserFactory .newInstance(); SAXParser parser = spf.newSAXParser(); ListXMLContentHandler handler = new ListXMLContentHandler(); parser.parse(inputStream, handler); inputStream.close(); mLists = handler.getmLists(); if (mListsByHot == null) { mListsByHot = sortByHot(mLists); Log.i(TAG, "最热列表排序完成..."); } // if (mListsByNew == null) { // mListsByNew = sortByNew(mLists); // Log.i(TAG, "最新列表排序完成..."); // } // if (mListsByVm == null) { // mListsByVm = sortByVm(mLists); // Log.i(TAG, "按照评分列表排序完成..."); // } // if (mListsByLetter == null) { // mListsByLetter = sortByLetter(mLists); // Log.i(TAG, "按照字母列表排序完成..."); // } mHandler.obtainMessage(1, mLists) .sendToTarget(); } else { // 文件不存在-去网上上面进行下载zip包,然后解压缩,解析数据 // 1,去网络上面请求数据 Log.v(TAG, "使用网络文件进行解析..."); isUseCache = false; boolean reault = DownXML .getFile("http://list1.ppstream.com/mobile/newipadc/sub/141.xml.zip"); if (!reault) { mHandler.obtainMessage(LIST_FAIL, mLists) .sendToTarget(); Toast.makeText(mContext, "获取列表失败...", Toast.LENGTH_SHORT).show(); return; } Log.v(TAG, "下载列表压缩包成功..."); // 2,对压缩包进行解压缩 boolean flag = ZipToFile.unzip("/sdcard", "141.xml.zip", "/sdcard/141.xml"); if (flag) { Log.v(TAG, "解压成功....."); // 解压成功,并且删除该压缩包, File file_zip = new File( "/sdcard/141.xml.zip"); if (file_zip.exists()) { file_zip.delete(); } } else { Log.v(TAG, "解压失败....."); mHandler.obtainMessage(LIST_FAIL, mLists) .sendToTarget(); Toast.makeText(mContext, "获取列表失败...", Toast.LENGTH_SHORT).show(); return; } // 3,对获取到的XML数据进行解析 // InputStream // inputStream=MyListActivity.class.getClassLoader().getResourceAsStream("141.xml"); Log.v(TAG, "进行xml解析....."); InputStream inputStream = DownXML .getXMLFromFile(new File( "/sdcard/141.xml/141.xml")); SAXParserFactory spf = SAXParserFactory .newInstance(); SAXParser parser = spf.newSAXParser(); ListXMLContentHandler handler = new ListXMLContentHandler(); parser.parse(inputStream, handler); inputStream.close(); mLists = handler.getmLists(); if (mListsByHot == null) { mListsByHot = sortByHot(mLists); Log.i(TAG, "最热列表排序完成..."); } // if (mListsByNew == null) { // mListsByNew = sortByNew(mLists); // Log.i(TAG, "最新列表排序完成..."); // } // if (mListsByVm == null) { // mListsByVm = sortByVm(mLists); // Log.i(TAG, "按照评分列表排序完成..."); // } // if (mListsByLetter == null) { // mListsByLetter = sortByLetter(mLists); // Log.i(TAG, "按照字母列表排序完成..."); // } mHandler.obtainMessage(1, mLists) .sendToTarget(); } } } // // 1,去网络上面请求数据 // DownXML.getFile("http://list1.ppstream.com/mobile/newipadc/sub/141.xml.zip"); // // 2,对压缩包进行解压缩 // boolean flag = ZipToFile.unzip("/sdcard", "141.xml.zip", // "/sdcard/141.xml"); // if (flag) { // Log.i(TAG, "解压成功....."); // // 解压成功,并且删除该压缩包, // File file = new File("/sdcard/141.xml.zip"); // if (file.exists()) { // file.delete(); // } // } else { // Log.i(TAG, "解压失败....."); // } // // 3,对获取到的XML数据进行解析 // // InputStream // // // inputStream=MyListActivity.class.getClassLoader().getResourceAsStream("141.xml"); // InputStream inputStream = DownXML.getXMLFromFile(new // File( // "/sdcard/141.xml/141.xml")); // SAXParserFactory spf = SAXParserFactory.newInstance(); // SAXParser parser = spf.newSAXParser(); // ListXMLContentHandler handler = new // ListXMLContentHandler(); // parser.parse(inputStream, handler); // inputStream.close(); // mLists = handler.getmLists(); // mHandler.obtainMessage(1, mLists).sendToTarget(); // // XML文件解析完成,删除该xml文件以及上层空文件夹 // //FileUtils.deleteAll(new // File("/sdcard/141.xml"));-->已经转移到使用广播进行删除 } else { // 没有网络连接 // Toast.makeText(mContext, "当前没有网络连接,使用缓存资源。", // Toast.LENGTH_SHORT).show(); // File file = new File("/sdcard/141.xml/141.xml"); // if (file.exists()) { // // 文件存在进行XML解析 // InputStream inputStream = DownXML.getXMLFromFile(file); // SAXParserFactory spf = SAXParserFactory.newInstance(); // SAXParser parser = spf.newSAXParser(); // ListXMLContentHandler handler = new // ListXMLContentHandler(); // parser.parse(inputStream, handler); // inputStream.close(); // mLists = handler.getmLists(); // mHandler.obtainMessage(1, mLists).sendToTarget(); // } else { // mHandler.obtainMessage(LIST_FAIL, mLists) // .sendToTarget(); // Toast.makeText(mContext, "无网络连接,请设置网络或者稍后访问.", // Toast.LENGTH_SHORT).show(); // return; // } Message msg = mHandler.obtainMessage(); msg.what = LIST_FAIL; mHandler.sendMessage(msg); } } catch (Exception e) { e.printStackTrace(); } } }; /** * 刷新数据 */ private void refreshData() { // 把最新的xml文件保存在sdcard中,下次加载的时候进行显示 Thread thread = new Thread(runnable_refresh); thread.start(); } Runnable runnable_refresh = new Runnable() { @Override public void run() { try { boolean reault = DownXML .getFile("http://list1.ppstream.com/mobile/newipadc/sub/141.xml.zip"); if (!reault) { mHandler.obtainMessage(LIST_FAIL, mLists).sendToTarget(); Toast.makeText(mContext, "获取列表失败...", Toast.LENGTH_SHORT) .show(); return; } Log.v(TAG, "下载列表压缩包成功..."); // 2,对压缩包进行解压缩 boolean flag = ZipToFile.unzip("/sdcard", "141.xml.zip", "/sdcard/141.xml"); if (flag) { Log.v(TAG, "解压成功....."); // 解压成功,并且删除该压缩包, File file_zip = new File("/sdcard/141.xml.zip"); if (file_zip.exists()) { file_zip.delete(); } } else { Log.v(TAG, "解压失败....."); } } catch (Exception e) { e.printStackTrace(); } } }; /** * 记载更多数据 */ private void loadMore() { int count = listAdapter.getCount(); if (count + 100 < maxSum) { // 数据还够100条,在取出相应的五十条数据 ChannelListServiceInterface mServiceInterface = new ChannelListServiceImp( mContext); List<SubModel> models = mServiceInterface.queryChanenlByLimited( 100, count); for (int i = 0; i < 100; i++) { SubModel model = new SubModel(); model.setImg(models.get(i).getImg()); model.setName(models.get(i).getName()); model.setOn(models.get(i).getOn()); model.setTp(models.get(i).getTp()); model.setVm(models.get(i).getVm()); model.setId(models.get(i).getId()); model.setTm(models.get(i).getTm()); model.setLt(models.get(i).getLt()); model.setTp(models.get(i).getTp()); model.setSearch(models.get(i).getSearch()); mLists.add(model); } } else { // 数据不足100条 ChannelListServiceInterface mServiceInterface = new ChannelListServiceImp( mContext); List<SubModel> models = mServiceInterface.queryChanenlByLimited( maxSum - count, count); for (int i = 0; i < maxSum - count; i++) { SubModel model = new SubModel(); model.setImg(models.get(i).getImg()); model.setName(models.get(i).getName()); model.setOn(models.get(i).getOn()); model.setTp(models.get(i).getTp()); model.setVm(models.get(i).getVm()); model.setId(models.get(i).getId()); model.setTm(models.get(i).getTm()); model.setLt(models.get(i).getLt()); model.setTp(models.get(i).getTp()); model.setSearch(models.get(i).getSearch()); mLists.add(model); } } } /** * 根据字母进行排序 * * @param pSubModels * @return */ private List<SubModel> sortByLetter(List<SubModel> pSubModels) { List<SubModel> tempSubModels = copeList(pSubModels); // 首先拷贝一份 int size = tempSubModels.size(); for (int i = 0; i < size; i++) { for (int j = 0; j < size - i - 1; j++) { int index = j + 1; if (tempSubModels.get(j).getLt() .compareTo(tempSubModels.get(index).getLt()) > 0) { SubModel tempSubModel = tempSubModels.get(j); tempSubModels.set(j, tempSubModels.get(index)); tempSubModels.set(index, tempSubModel); } } } return tempSubModels; } /** * 根据时间进行排序 倒置 * * @param pSubModels * @return */ private List<SubModel> sortByNew(List<SubModel> pSubModels) { return ArraysUtils.convertArrays(pSubModels); } /** * 根据剧情的评分进行排序 * * @param pSubModels * @return */ private List<SubModel> sortByVm(List<SubModel> pSubModels) { List<SubModel> tempSubModels = copeList(pSubModels); // 首先拷贝一份 int size = tempSubModels.size(); for (int i = 0; i < size; i++) { for (int j = 0; j < size - i - 1; j++) { int index = j + 1; if (tempSubModels.get(j).getVm() < tempSubModels.get(index) .getVm()) { SubModel tempSubModel = tempSubModels.get(j); tempSubModels.set(j, tempSubModels.get(index)); tempSubModels.set(index, tempSubModel); } } } return tempSubModels; } /** * 根据剧情的看的人数进行排序 * * @param pSubModels * @return */ private List<SubModel> sortByHot(List<SubModel> pSubModels) { List<SubModel> tempSubModels = copeList(pSubModels); // 首先拷贝一份 int size = tempSubModels.size(); for (int i = 0; i < size; i++) { for (int j = 0; j < size - i - 1; j++) { int index = j + 1; if (tempSubModels.get(j).getOn() < tempSubModels.get(index) .getOn()) { SubModel tempSubModel = tempSubModels.get(j); tempSubModels.set(j, tempSubModels.get(index)); tempSubModels.set(index, tempSubModel); } } } return tempSubModels; } /** * 进行复制一个集合 * * @param pSource * @param pDest * @param pSize */ private List<SubModel> copeList(List<SubModel> pSource) { int size = pSource.size(); List<SubModel> pDest = new ArrayList<SubModel>(size); for (int i = 0; i < size; i++) { SubModel model = new SubModel(); model.setImg(pSource.get(i).getImg()); model.setName(pSource.get(i).getName()); model.setOn(pSource.get(i).getOn()); model.setTp(pSource.get(i).getTp()); model.setVm(pSource.get(i).getVm()); model.setId(pSource.get(i).getId()); model.setTm(pSource.get(i).getTm()); model.setLt(pSource.get(i).getLt()); model.setTp(pSource.get(i).getTp()); model.setSearch(pSource.get(i).getSearch()); pDest.add(model); } return pDest; } /** * 根据输入的字符型进行搜索剧情列表 * * @param pStr * @return 返回搜索成功的剧情对象集合 */ private List<SubModel> searchModels(String pStr, List<SubModel> pSource) { List<SubModel> pDest = new ArrayList<SubModel>(); char[] search_char = pStr.toCharArray(); int length = search_char.length; int size = pSource.size(); for (int i = 0; i < size; i++) { String name = pSource.get(i).getName(); for (int index = 0; index < length; index++) { if (name.indexOf(search_char[index]) != -1) { pDest.add(pSource.get(i)); break; } } } return pDest; } }