package com.partynetwork.iparty.ishare;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
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.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.LayoutAnimationController;
import android.view.animation.TranslateAnimation;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.baidu.mobstat.StatService;
import com.lidroid.xutils.util.LogUtils;
import com.partynetwork.dataprovider.DataProvider.IJsonResultListener;
import com.partynetwork.dataprovider.json.NetworkEntity;
import com.partynetwork.dataprovider.json.struct.Ishare_getIshareArrayRequest;
import com.partynetwork.dataprovider.json.struct.Ishare_getIshareArrayResponse;
import com.partynetwork.dataprovider.json.struct.Ishare_getIshareRequest;
import com.partynetwork.dataprovider.json.struct.Ishare_getIshareResponse;
import com.partynetwork.dataprovider.util.L;
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.ShareList;
import com.partynetwork.iparty.dom.OnPullDownListener;
import com.partynetwork.iparty.dom.PullDownReturnListener;
import com.partynetwork.iparty.helper.IntentHelper;
import com.partynetwork.iparty.info.IshareInfo;
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;
public class IsharePage extends LinearLayout implements OnItemClickListener,
Callback {
private Activity mContext;
private XListView mListView;
private IshareAdapter mAdapter;
private List<IshareInfo> mList = new ArrayList<IshareInfo>();
private Handler mHandler;
private PullDownView mDownView;
private PullDownReturnListener pullDownReturnListener;
private int lastId;
private int pageNumber = 0;
private int pageSize = 15;
private int ishareType = 9;
private boolean isRefresh = false;
private int[] resIds = new int[] {
R.drawable.menu_pulldown_share_all_selector,
R.drawable.menu_pulldown_share_hot_selector,
R.drawable.menu_pulldown_share_friend_selector,
R.drawable.menu_pulldown_share_praise_selector };
private String[] typeString = new String[] { "所有关注", "热门分享", "i好友分享",
"我赞过的", "我的i分享" };
private String[] colors = new String[] { "#00bcff", "#ff9100", "#25c105",
"#ff4d4d" };
// 小菊花
private LoadingDialog dialog;
public IsharePage(Activity context) {
super(context);
mContext=context;
initView();
}
private void initView() {
View.inflate(mContext, R.layout.ishare, this);
mListView = (XListView) this.findViewById(R.id.ishare_list);
TextView emptyView = new TextView(mContext);
emptyView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
emptyView.setText("正在加载中……");
emptyView.setGravity(Gravity.CENTER);
emptyView.setVisibility(View.GONE);
((ViewGroup) mListView.getParent()).addView(emptyView);
mListView.setEmptyView(emptyView);
mListView.setPullLoadEnable(true);
mListView.setPullRefreshEnable(true);
mListView.setOnItemClickListener(this);
mAdapter = new IshareAdapter(mContext, mList);
mListView.setAdapter(mAdapter);
mListView.setXListViewListener(new IXListViewListener() {
public void onRefresh() {
initRequest();
isRefresh = true;
getShareList();
}
public void onLoadMore() {
isRefresh = false;
getShareList();
}
});
mDownView = new PullDownView(mContext, resIds, typeString, colors, 1);
mDownView.setFilterListener(filterListener);
mHandler = new Handler(this);
dialog = new LoadingDialog(mContext);
}
/**
* 顶部菜单选择事件监听
*
* @author Administrator
*
*/
private FilterListener filterListener = new FilterListener() {
public void choose(int position) {
if (pullDownReturnListener != null) {
pullDownReturnListener.changTitle(typeString[position]);
}
// 刷新
initRequest();
ishareType = position;
isRefresh = true;
getShareList();
}
};
/**
* 获取数据
*/
public void getShareList() {
dialog.show();
new Thread() {
@Override
public void run() {
Message msg = new Message();
try {
AppContext ac = (AppContext) mContext
.getApplicationContext();
ShareList shareList = ac.getShareList(ishareType,
pageNumber, lastId, pageSize);
// 保存信息
// ...
// 待完成
msg.what = 1;// 成功
msg.obj = shareList;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
mHandler.sendMessage(msg);
}
}.start();
}
/**
* 初始化请求
*/
private void initRequest() {
// 初始化请求
pageNumber = 0;
lastId = 0;
}
/**
* 停止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);
}
}
/**
* 设置下拉功能菜单修改监听
*/
public void setPullDownReturnListener(
PullDownReturnListener pullDownReturnListener) {
this.pullDownReturnListener = pullDownReturnListener;
}
/**
* 页面恢复方法
*/
public void onResume() {
StatService.onPageStart(mContext, "isharePage");
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
IshareInfo info = mList.get(position - 1);
IntentHelper.goShareInfoActivity(mContext, info.getIshareId());
}
public void onPause() {
StatService.onPageEnd(mContext, "isharePage");
}
@Override
public boolean handleMessage(Message msg) {
dialog.hide();
if (msg.what == 1) {
ShareList shareList = (ShareList) msg.obj;
if (isRefresh) {
mList.removeAll(mList);
pageNumber = 0;
} else {
pageNumber++;
}
if (shareList != null) {
List<IshareInfo> list = shareList.getShareList();
if (list.size() > 0) {
mList.addAll(list);
lastId = list.get(list.size() - 1).getIshareId();
}
}
mAdapter.notifyDataSetChanged();
stopLoad();
} else if (msg.what == -1) {
AppException e = (AppException) msg.obj;
if (AppContext.getInstance().isLogin()) {
e.makeToast(mContext);
}
}
return false;
}
public boolean isEmpty() {
return mListView.getCount() > 3 ? false : true;
}
}