package com.smartdot.cgt.activity; import java.util.HashMap; import java.util.List; import android.content.DialogInterface; import android.content.Intent; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.TextView; import com.smartdot.cgt.R; import com.smartdot.cgt.model.CaseModel; import com.smartdot.cgt.model.ResponseResult; import com.smartdot.cgt.request.Request; import com.smartdot.cgt.util.ApplicationMain; import com.smartdot.cgt.util.BaseThread; import com.smartdot.cgt.util.HandlerStatus; import com.smartdot.cgt.util.Msg; import com.smartdot.cgt.util.NotificationCreater; import com.smartdot.cgt.view.ListModelAdapterUseListItemView; import com.smartdot.cgt.view.TitleBar; /** * @ClassName: FrmMyTask * @Description: 我的任务页面 * @author zhaosw email:vvtale@gmail.com * @date 2014年4月22日 上午12:55:46 */ public class FrmMyTask extends BaseActivity { private final String THREADGETCHECKTASK = "CHECKTASK"; private final String THREADGETRECHECKTASK = "RECHECKTASK"; private ListView listCheckProblem; private ListView listReCheckProblem; private TextView labelCheckTask; private TextView labelReCheckTask; protected int nowPageReCheck = 0; private int totalCountReCheck = 0; protected int nowPageCheck = 0; private int totalCountCheck = 0; private HashMap<String, BaseThread> threadList = new HashMap<String, BaseThread>( 2); private ListView nowMaxView; private DialogHandler dialogHandler; @Override protected void setLayout() { initActivity(); setContentView(R.layout.mytask); listCheckProblem = (ListView) findViewById(R.id.listCheckProblem); listReCheckProblem = (ListView) findViewById(R.id.listReCheckProblem); labelCheckTask = (TextView) findViewById(R.id.labelCheckTask); labelReCheckTask = (TextView) findViewById(R.id.labelReCheckTask); TitleBar titlebar = (TitleBar) this.findViewById(R.id.titlebar); titlebar.setTitleText(R.string.module_mytask); dialogHandler = new DialogHandler(); } @Override protected void doInit() { getProblemCheckList(); getProblemReCheckList(); } @Override protected void onResume() { super.onResume(); NotificationCreater.closeNotification(FrmMyTask.this, R.drawable.notification_task); } @Override protected void addEventListener() { labelCheckTask.setOnClickListener(onClickListener); labelReCheckTask.setOnClickListener(onClickListener); listCheckProblem.setOnItemClickListener(onItemClickListener); listCheckProblem.setOnScrollListener(onScrollListener); listReCheckProblem.setOnItemClickListener(onItemClickListener); listReCheckProblem.setOnScrollListener(onScrollListener); } @SuppressWarnings("unchecked") @Override protected void handleMessage(Message msg) { if (msg.what == HandlerStatus.REQUEST_GETPROBLEMCHECKLIST) { threadList.get(THREADGETCHECKTASK).interrupt(); if (msg.arg1 == HandlerStatus.HANDLE_OK) { if (msg.obj != null) { ResponseResult<List<CaseModel>> listItem = (ResponseResult<List<CaseModel>>) msg.obj; if (listItem != null) { totalCountCheck = listItem.getAllCount(); if (listItem.getAllCount() <= 0) { Log.d(TAG, "xxxxxxxxxxx"); Msg.showInfo(FrmMyTask.this, "未查询到任何核实任务项"); } if (nowPageCheck == 0) { ListModelAdapterUseListItemView<CaseModel> listItemAdapter = new ListModelAdapterUseListItemView<CaseModel>( FrmMyTask.this, listItem.getResultObj(),// 数据源 R.layout.listitemview,// ListItem的XML实现 // 动态数组与ImageItem对应的子项 new String[] { "caseId", "caseSituation", "startTimeDate", "startTimeTime" }, new int[] { R.id.caseId, R.id.caseDescription, R.id.startTimeDate, R.id.startTimeTime }, R.id.btnViewDetail, itemClick); listCheckProblem.setAdapter(listItemAdapter); } else { ListModelAdapterUseListItemView<CaseModel> adapter = (ListModelAdapterUseListItemView<CaseModel>) listCheckProblem .getAdapter(); adapter.addData(listItem.getResultObj()); adapter.notifyDataSetChanged(); } nowPageCheck++;// 获取成功后修改当前页 } } } else { Msg.showInfo(FrmMyTask.this, "获取案卷核实列表时出错!"); } if (!threadList.containsKey(THREADGETRECHECKTASK) || !threadList.get(THREADGETRECHECKTASK).getIsThreadGoing()) { // TODO 离线版用handler来关闭Dialog closeProgress(); } } else if (msg.what == HandlerStatus.REQUEST_GETPROBLEMRECHECKLIST) { threadList.get(THREADGETRECHECKTASK).interrupt(); if (msg.arg1 == HandlerStatus.HANDLE_OK) { if (msg.obj != null) { ResponseResult<List<CaseModel>> listItem = (ResponseResult<List<CaseModel>>) msg.obj; if (listItem != null) { totalCountReCheck = listItem.getAllCount(); if (listItem.getAllCount() <= 0) { Msg.showInfo(FrmMyTask.this, "未查询到任何核查任务项"); } if (nowPageReCheck == 0) { ListModelAdapterUseListItemView<CaseModel> listItemAdapter = new ListModelAdapterUseListItemView<CaseModel>( FrmMyTask.this, listItem.getResultObj(),// 数据源 R.layout.listitemview,// ListItem的XML实现 // 动态数组与ImageItem对应的子项 new String[] { "caseId", "caseSituation", "startTimeDate", "startTimeTime" }, new int[] { R.id.caseId, R.id.caseDescription, R.id.startTimeDate, R.id.startTimeTime }, R.id.btnViewDetail, itemClick); listReCheckProblem.setAdapter(listItemAdapter); } else { ListModelAdapterUseListItemView<CaseModel> adapter = (ListModelAdapterUseListItemView<CaseModel>) listReCheckProblem .getAdapter(); adapter.addData(listItem.getResultObj()); adapter.notifyDataSetChanged(); } nowPageReCheck++;// 获取成功后修改当前页 } } } else { Msg.showInfo(FrmMyTask.this, "获取案卷核查列表时出错!"); } if (!threadList.containsKey(THREADGETCHECKTASK) || !threadList.get(THREADGETCHECKTASK).getIsThreadGoing()) { // TODO 离线版用handler来关闭Dialog closeProgress(); } } } private OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View arg0) { if (arg0 == labelCheckTask) { setMaxView(listCheckProblem); } else if (arg0 == labelReCheckTask) { setMaxView(listReCheckProblem); } } }; private OnItemClickListener itemClick = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if (arg0 == listCheckProblem) { CaseModel item = (CaseModel) listCheckProblem .getItemAtPosition(arg2); Intent intent = new Intent(FrmMyTask.this, FrmProblemCheckDetail.class); intent.putExtra("checkedProblemItem", item); startActivity(intent); } else if (arg0 == listReCheckProblem) { CaseModel item = (CaseModel) listReCheckProblem .getItemAtPosition(arg2); Intent intent = new Intent(FrmMyTask.this, FrmProblemReCheckDetail.class); intent.putExtra("reCheckedProblemItem", item); startActivity(intent); } } }; private OnItemClickListener onItemClickListener = new OnItemClickListener() { @SuppressWarnings("unchecked") @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if (arg0 == listCheckProblem) { setMaxView(listCheckProblem); ListModelAdapterUseListItemView<CaseModel> adapter = (ListModelAdapterUseListItemView<CaseModel>) listCheckProblem .getAdapter(); adapter.setItemIndex(arg2); // TODO 直接跳转到详细页面 CaseModel item = (CaseModel) listCheckProblem .getItemAtPosition(arg2); Intent intent = new Intent(FrmMyTask.this, FrmProblemCheckDetail.class); intent.putExtra("checkedProblemItem", item); startActivity(intent); } else if (arg0 == listReCheckProblem) { setMaxView(listReCheckProblem); ListModelAdapterUseListItemView<CaseModel> adapter = (ListModelAdapterUseListItemView<CaseModel>) listReCheckProblem .getAdapter(); adapter.setItemIndex(arg2); // TODO 直接跳转到详细页面 CaseModel item = (CaseModel) listReCheckProblem .getItemAtPosition(arg2); Intent intent = new Intent(FrmMyTask.this, FrmProblemReCheckDetail.class); intent.putExtra("reCheckedProblemItem", item); startActivity(intent); } } }; private OnScrollListener onScrollListener = new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == OnScrollListener.SCROLL_STATE_IDLE && view.getLastVisiblePosition() + 1 == view.getCount()) { if (view == listCheckProblem) { if (!threadList.containsKey(THREADGETCHECKTASK) || !threadList.get(THREADGETCHECKTASK) .getIsThreadGoing()) { if (nowPageCheck < Math.ceil((double) totalCountCheck / ApplicationMain.getInstance().getCgtConfig() .getPageSize())) { getProblemCheckList(); } } } else if (view == listReCheckProblem) { if (!threadList.containsKey(THREADGETRECHECKTASK) || !threadList.get(THREADGETRECHECKTASK) .getIsThreadGoing()) { if (nowPageReCheck < Math .ceil((double) totalCountReCheck / ApplicationMain.getInstance() .getCgtConfig().getPageSize())) { getProblemReCheckList(); } } } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } }; @Override protected void onCancelProgress(DialogInterface arg0) { for (BaseThread thread : threadList.values()) { if (thread != null) { thread.interrupt(); } } threadList.clear(); FrmMyTask.this.finish(); } // TODO 不用该函数 private void setMaxView(final ListView listView) { if (nowMaxView != listView) { if (nowMaxView == null) { if (listView == listCheckProblem) { nowMaxView = listReCheckProblem; } else { nowMaxView = listCheckProblem; } } // nowMaxView.setVisibility(View.GONE); // listView.setVisibility(View.VISIBLE); nowMaxView = listView; } } /** * */ private void getProblemCheckList() { BaseThread thread = new BaseThread(baseHandler) { @Override public void runThread() { BaseThread checkTaskThread = threadList.get(THREADGETCHECKTASK); Message msg = checkTaskThread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.REQUEST_GETPROBLEMCHECKLIST; try { // TODO 测试数据 // ResponseResult<List<CaseModel>> listItem = TestDataUtil // .getCaseModel3(); ResponseResult<List<CaseModel>> listItem = Request .getRequest().getProblemCheckList( ApplicationMain.getInstance() .getUserModel().getBgAdminId(), nowPageCheck + 1, ApplicationMain.getInstance() .getCgtConfig().getPageSize()); msg.arg1 = HandlerStatus.HANDLE_OK; msg.obj = listItem; } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; e.printStackTrace(); } checkTaskThread.sendMessage(msg); } } }; threadList.put(THREADGETCHECKTASK, thread); showProgress("我的任务列表查询中。。。", "我的任务"); // TODO 延迟1s关闭Dialog // dialogHandler.sendEmptyMessageDelayed(4, 1000); thread.start(); } private void getProblemReCheckList() { BaseThread thread = new BaseThread(baseHandler) { @Override public void runThread() { BaseThread reCheckTaskThread = threadList .get(THREADGETRECHECKTASK); Message msg = reCheckTaskThread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.REQUEST_GETPROBLEMRECHECKLIST; try { ResponseResult<List<CaseModel>> listItem = Request .getRequest().getProblemReCheckList( ApplicationMain.getInstance() .getUserModel().getBgAdminId(), nowPageReCheck + 1, ApplicationMain.getInstance() .getCgtConfig().getPageSize()); // TODO 测试数据 // ResponseResult<List<CaseModel>> listItem = TestDataUtil // .getCaseModel(); msg.arg1 = HandlerStatus.HANDLE_OK; msg.obj = listItem; } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; e.printStackTrace(); } reCheckTaskThread.sendMessage(msg); } } }; threadList.put(THREADGETRECHECKTASK, thread); showProgress("我的任务列表查询中。。。", "我的任务"); // TODO 延迟1s关闭Dialog // dialogHandler.sendEmptyMessageDelayed(4, 1000); thread.start(); } public void refreshReCheckList() { nowPageReCheck = 0; totalCountReCheck = 0; getProblemReCheckList(); } public void refreshCheckList() { nowPageCheck = 0; totalCountCheck = 0; getProblemCheckList(); } //TODO class DialogHandler extends Handler { @Override public void handleMessage(Message msg) { super.handleMessage(msg); closeProgress(); } } }