package com.wb.sc.mk.personal;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.common.net.volley.VolleyErrorHelper;
import com.common.util.PageInfo;
import com.common.widget.ToastHelper;
import com.common.widget.helper.PullRefreshListViewHelper;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnLastItemVisibleListener;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.wb.sc.R;
import com.wb.sc.activity.base.BaseHeaderActivity;
import com.wb.sc.activity.base.ReloadListener;
import com.wb.sc.adapter.MsgListAdapter;
import com.wb.sc.app.SCApp;
import com.wb.sc.bean.Msg;
import com.wb.sc.bean.PostType;
import com.wb.sc.config.NetConfig;
import com.wb.sc.config.RespCode;
import com.wb.sc.task.MsgRequest;
import com.wb.sc.task.PostTypeRequest;
import com.wb.sc.util.Constans;
import com.wb.sc.util.MetaUtil;
import com.wb.sc.util.ParamsUtil;
public class MsgCenterActivity extends BaseHeaderActivity implements
OnItemClickListener, ReloadListener, Listener<Msg>, ErrorListener{
private Spinner typeSp;
private int spinnerPosition = 0;
private String reqType = "FG39";
private String msgType = "00";
private PullToRefreshListView mPullListView;
private PullRefreshListViewHelper mPullHelper;
private ListView mListView;
private PageInfo mPage = new PageInfo();
private int loadState = PullRefreshListViewHelper.BOTTOM_STATE_LOAD_IDLE;
private MsgListAdapter mAdapter;
private Msg msg;
private MsgRequest MmsgCenterRequest;
private PostTypeListener mPostTypeListener = new PostTypeListener();
private PostTypeRequest mPostTypeRequest;
private PostType mPostType;
private String[] types;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.common_header_layout, R.layout.activity_msg_center);
getIntentData();
initHeader(getResources().getString(R.string.ac_msg_center));
initView();
showLoading();
requestPostType(getPostTypeRequestParams("USER_MSG_TYPE"), mPostTypeListener, this);
// showLoading();
requestBase(getBaseRequestParams(), this, this);
}
@Override
public void getIntentData() {
}
/**
* 执行任务请求
* @param method
* @param url
* @param params
* @param listenre
* @param errorListener
*/
private void requestPostType(List<String> params,
Listener<PostType> listenre, ErrorListener errorListener) {
// if(mPostTypeRequest != null) {
// mPostTypeRequest.cancel();
// }
String url = NetConfig.getServerBaseUrl() + NetConfig.EXTEND_URL;
mPostTypeRequest = new PostTypeRequest(url, params, listenre, errorListener);
startRequest(mPostTypeRequest);
}
/**
* 获取帖子分类请求参数
* @return
*/
private List<String> getPostTypeRequestParams(String type) {
List<String> params = new ArrayList<String>();
params.add(ParamsUtil.getReqParam("FG21", 4));
params.add(ParamsUtil.getReqParam("MC_CENTERM", 16));
params.add(ParamsUtil.getReqParam("00001", 20));
params.add(ParamsUtil.getReqParam(type, 64));
params.add(ParamsUtil.getReqParam("", 64));
params.add(ParamsUtil.getReqParam("", 64));
params.add(ParamsUtil.getReqIntParam(1, 3));
params.add(ParamsUtil.getReqIntParam(10, 2));
return params;
}
/**
*
* @描述:帖子分类监听
* @作者:liang bao xian
* @时间:2014年10月27日 上午8:51:09
*/
class PostTypeListener implements Listener<PostType>{
/**
* 请求完成,处理UI更新
*/
@Override
public void onResponse(PostType response) {
// showContent();
if(response.respCode.equals(RespCode.SUCCESS)) {
mPostType = response;
types = new String[mPostType.datas.size()/* + 1*/];
// types[0] = "全部";
for(int i=0; i< mPostType.datas.size() ; i++) {
types[i /*+ 1*/] = mPostType.datas.get(i).name;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MsgCenterActivity.this,
R.layout.spinner_text_layout, types);
adapter.setDropDownViewResource(R.layout.spinner_down_text_layout);
typeSp.setAdapter(adapter);
// adapter.notifyDataSetChanged();
} else {
ToastHelper.showToastInBottom(MsgCenterActivity.this, response.respCodeMsg);
}
}
}
@Override
public void initView() {
typeSp = (Spinner) findViewById(R.id.type);
// String[] types = getResources().getStringArray(R.array.msg_type);
// ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
// R.layout.spinner_text_layout, types);
// adapter.setDropDownViewResource(R.layout.spinner_down_text_layout);
// typeSp.setAdapter(adapter);
typeSp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
if (arg2 != spinnerPosition) {
spinnerPosition = arg2;
mPage.pageNo = 1;
msgType = mPostType.datas.get(arg2).id;
// showLoading();
startMsgCenterRequest();
mPullListView.setMode(Mode.PULL_FROM_END);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
mPullListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
mPullListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//处理下拉刷新
mPage.pageNo = 1;
startMsgCenterRequest();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
//处理上拉加载
}
});
mPullListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() {
@Override
public void onLastItemVisible() {
//滑动到底部的处理
if(loadState == PullRefreshListViewHelper.BOTTOM_STATE_LOAD_IDLE && msg.hasNextPage) {
loadState = PullRefreshListViewHelper.BOTTOM_STATE_LOADING;
mPage.pageNo++;
startMsgCenterRequest();
}
}
});
//设置刷新时请允许滑动的开关使能
mPullListView.setScrollingWhileRefreshingEnabled(true);
//设置自动刷新功能
mPullListView.setRefreshing(false);
//设置拉动模式
mPullListView.setMode(Mode.PULL_FROM_END);
mListView = mPullListView.getRefreshableView();
mListView.setOnItemClickListener(this);
mPage = new PageInfo();
mPullHelper = new PullRefreshListViewHelper(this, mListView, mPage.pageSize);
mPullHelper.setBottomClick(new OnClickListener() {
@Override
public void onClick(View v) {
if(loadState == PullRefreshListViewHelper.BOTTOM_STATE_LOAD_FAIL) {
//加载失败,点击重试
loadState = PullRefreshListViewHelper.BOTTOM_STATE_LOADING;
mPullHelper.setBottomState(loadState);
startMsgCenterRequest();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//此处设置菜单
setDisplayHomeAsUpEnabled(true);
setDisplayShowHomeEnabled(false);
startMsgCenterRequest();
return super.onCreateOptionsMenu(menu);
}
/**
* 菜单点击处理
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
/**
* 列表选项点击的处理
*/
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Msg.MgItem msgItem = msg.datas.get(position-1);
int msgType = Integer.valueOf(msgItem.msgTypeNO);
// switch(msgType) {
// case 1:{
Intent intent = new Intent(this, BulletinActivity.class);
intent.putExtra("title", msgItem.msgTitle);
intent.putExtra("content", msgItem.msgContent);
intent.putExtra("time", msgItem.msgCreteTime);
startActivity(intent);
// }break;
//
// case 2:{
// }break;
//
// case 3:{
// }break;
//
// case 4:{
// }break;
//
// case 5:{
// }break;
//
// case 6:{
// }break;
// }
}
public void bulletin() {
Intent intent = new Intent(this, BulletinActivity.class);
startActivity(intent);
}
/**
*
* @描述:启动请求
*/
private void startMsgCenterRequest() {
requestBase(getBaseRequestParams(), MsgCenterActivity.this, MsgCenterActivity.this);
}
@Override
public void onReload() {
mPage.pageNo = 1;
// showLoading();
startMsgCenterRequest();
}
/**
* 获取请求参数,请按照接口文档列表顺序排列
* @return
*/
private List<String> getBaseRequestParams() {
List<String> params = new ArrayList<String>();
params.add(ParamsUtil.getReqParam(reqType, 4)); //修改系统消息
params.add(ParamsUtil.getReqParam("MC_CENTERM", 16));
params.add(ParamsUtil.getReqParam(MetaUtil.readMeta(this, Constans.APP_CHANNEL), 20));
params.add(ParamsUtil.getReqParam(SCApp.getInstance().getUser().userId +"", 64));
params.add(ParamsUtil.getReqParam(SCApp.getInstance().getUser().communityId +"", 64));
params.add(ParamsUtil.getReqParam(msgType, 64));
params.add(ParamsUtil.getReqIntParam(mPage.pageNo, 3));
params.add(ParamsUtil.getReqIntParam(mPage.pageSize, 2));
return params;
}
/**
* 执行任务请求
* @param method
* @param url
* @param params
* @param listenre
* @param errorListener
*/
private void requestBase(List<String> paramsList,
Listener<Msg> listenre, ErrorListener errorListener) {
if(MmsgCenterRequest != null) {
MmsgCenterRequest.cancel();
}
String url = NetConfig.getServerBaseUrl() + NetConfig.EXTEND_URL;
MmsgCenterRequest = new MsgRequest(url, paramsList, this, this);
startRequest(MmsgCenterRequest);
}
@Override
public void onErrorResponse(VolleyError error) {
showLoadError(this);
ToastHelper.showToastInBottom(getApplicationContext(), VolleyErrorHelper.getErrorMessage(this, error));
}
@Override
public void onResponse(Msg response) {
if(response.respCode.equals(RespCode.SUCCESS)) {
if(mPullListView.isRefreshing()) {
mPullListView.onRefreshComplete();
}
if(response.totalNum == 0) { //显示空
if(msg != null && msg.datas != null && mAdapter != null) {
msg.datas.clear();
mAdapter.notifyDataSetChanged();
}
return;
}
if (response.datas.size() > 0) {
if(mPage.pageNo == 1) {
msg = response;
mAdapter = new MsgListAdapter(this, msg.datas);
mListView.setAdapter(mAdapter);
showContent();
} else {
msg.hasNextPage = response.hasNextPage;
msg.datas.addAll(response.datas);
mAdapter.notifyDataSetChanged();
}
}
loadState = PullRefreshListViewHelper.BOTTOM_STATE_LOAD_IDLE;
if(msg.hasNextPage) {
mPullHelper.setBottomState(PullRefreshListViewHelper.BOTTOM_STATE_LOADING);
} else {
mPullHelper.setBottomState(PullRefreshListViewHelper.BOTTOM_STATE_NO_MORE_DATE);
}
} else {
ToastHelper.showToastInBottom(this, response.respCodeMsg);
}
}
}