package com.partynetwork.iparty.iparty; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.os.Handler; import android.os.Handler.Callback; import android.os.Message; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.LinearLayout; import android.widget.TextView; import com.baidu.mobstat.StatService; import com.partynetwork.dataprovider.util.T; import com.partynetwork.dataprovider.util.TimeUtil; import com.partynetwork.iparty.R; import com.partynetwork.iparty.app.AppContext; import com.partynetwork.iparty.app.AppException; import com.partynetwork.iparty.app.bean.IpartyList; import com.partynetwork.iparty.dom.PullDownReturnListener; import com.partynetwork.iparty.flipmenu.Main; import com.partynetwork.iparty.info.IpartyInfo; import com.partynetwork.iparty.ishare.PullDownView; import com.partynetwork.iparty.ishare.PullDownView.FilterListener; import com.partynetwork.myview.mylistview.XListView; import com.partynetwork.myview.mylistview.XListView.IXListViewListener; import com.partynetwork.myview.mytoast.LoadingDialog; /** * iparty显示主页 */ public class IpartyPage extends LinearLayout implements Callback { private Activity mActivity; private XListView mListView; private IpartyAdapter mAdapter; private List<IpartyInfo> mList = new ArrayList<IpartyInfo>(); private Handler mHandler; private PullDownView mDownView; private PullDownReturnListener pullDownReturnListener; private int lastId; private int pageNumber = 0; private int pageSize = 10; private int ipartyType = 0; private boolean isRefresh = false; private int[] resIds = new int[] { R.drawable.menu_pulldown_iparty_all_selector, R.drawable.menu_pulldown_iparty_funding_selector, R.drawable.menu_pulldown_iparty_advance_selector, R.drawable.menu_pulldown_iparty_hot_selector }; private String[] typeString = new String[] { "所有关注", "众筹Party", "预定Party", "热门Party", "好友发起的", "我发起的", "我参加的", "我感兴趣的" }; private String[] colors = new String[] { "#ff9100", "#f40000", "#25c105", "#00bcff" }; private IpartyListHeaderView headerView; private int headHeight;// 头部控件的高度 // 小菊花 // private LoadingDialog dialog; public IpartyPage(Activity activity) { super(activity); mActivity = activity; View.inflate(mActivity, R.layout.iparty, this); initView(); } /** * 获取数据 */ public void getPartyList() { //加上之后,有时候要奔溃 T.showLoading(mActivity); new Thread() { @Override public void run() { Message msg = new Message(); try { AppContext ac = (AppContext) mActivity .getApplicationContext(); IpartyList ipartyList = ac.getIpartyList(ipartyType, pageNumber, lastId, pageSize); // 保存信息 // ... // 待完成 msg.what = 1;// 成功 msg.obj = ipartyList; } catch (AppException e) { e.printStackTrace(); msg.what = -1; msg.obj = e; } mHandler.sendMessage(msg); } }.start(); } /** * 初始化控件 */ private void initView() { mListView = (XListView) this.findViewById(R.id.iparty_list); TextView emptyView = new TextView(mActivity); emptyView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); emptyView.setGravity(Gravity.CENTER); emptyView.setText("正在加载中……"); emptyView.setVisibility(View.GONE); ((ViewGroup) mListView.getParent()).addView(emptyView); mListView.setEmptyView(emptyView); mListView.setPullLoadEnable(true); mListView.setPullRefreshEnable(false); headerView = new IpartyListHeaderView(mActivity); headHeight = headerView.getThisHeight(); mListView.addHeaderView(headerView); mAdapter = new IpartyAdapter(mActivity, mList); mListView.setAdapter(mAdapter); mListView.setXListViewListener(new IXListViewListener() { @Override public void onRefresh() { initRequest(); isRefresh = true; getPartyList(); } @Override public void onLoadMore() { isRefresh = false; getPartyList(); } }); // 初始化下拉弹窗 mDownView = new PullDownView(mActivity, resIds, typeString, colors, 0); mDownView.setFilterListener(filterListener); mHandler = new Handler(this); // dialog = new LoadingDialog(mActivity); } /** * 初始化请求 */ private void initRequest() { // 初始化请求 pageNumber = 0; lastId = 0; } /** * 下拉事件监听 * * @author Administrator * */ private FilterListener filterListener = new FilterListener() { public void choose(int position) { if (pullDownReturnListener != null) { pullDownReturnListener.changTitle(typeString[position]); } // 刷新 if (ipartyType != position) { initRequest(); getPartyList(); isRefresh = true; if (position == 0) { AbsListView.LayoutParams params = (AbsListView.LayoutParams) headerView .getLayoutParams(); params.height = headHeight; headerView.setLayoutParams(params); headerView.setVisibility(View.VISIBLE); mListView.setPullRefreshEnable(false); } else { AbsListView.LayoutParams params = (AbsListView.LayoutParams) headerView .getLayoutParams(); params.height = 1; headerView.setLayoutParams(params); headerView.setVisibility(View.GONE); mListView.setPullRefreshEnable(true); } ipartyType = position; } } }; /** * 停止listview下拉刷新的数据加载 */ private void stopLoad() { mListView.stopRefresh(); mListView.stopLoadMore(); mListView.setRefreshTime(TimeUtil.getCurDateStr()); } /** * 下拉弹窗 */ public void show() { if (mDownView != null) { mDownView.showAtLocation(this, Gravity.TOP, 0, 0); // mDownView.showAsDropDown(this); } } /** * 设置下拉功能菜单修改监听 */ public void setListener(PullDownReturnListener pullDownReturnListener) { this.pullDownReturnListener = pullDownReturnListener; } /** * 页面恢复方法 */ public void onResume() { StatService.onPageStart(mActivity, "ipartyPage"); } public void onPause() { StatService.onPageEnd(mActivity, "ipartyPage"); } @Override public boolean handleMessage(Message msg) { T.hideLoading(); if (msg.what == 1) { IpartyList ipartyList = (IpartyList) msg.obj; if (isRefresh) { mList.removeAll(mList); pageNumber = 0; } else { pageNumber++; } if (ipartyList != null) { List<IpartyInfo> list = ipartyList.getIpartyList(); if (list.size() > 0) { mList.addAll(list); lastId = list.get(list.size() - 1).getIpartyId(); } } mAdapter.notifyDataSetChanged(); stopLoad(); } else if (msg.what == -1) { AppException e = (AppException) msg.obj; if (AppContext.getInstance().isLogin()) { e.makeToast(mActivity); } } return false; } public boolean isEmpty() { // 一头一尾加轮播一共3个,所以要大于3才算有数据 return mListView.getCount() > 3 ? false : true; } public void onActivityResult(int requestCode, int resultCode, Intent data) { if (headerView != null) { headerView.onActivityResult(requestCode, resultCode, data); } } }