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