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);
}
}
}