package com.jiuqi.njt.management; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import com.jiuqi.mobile.nigo.comeclose.bean.app.file.RepairsFileBean; import com.jiuqi.mobile.nigo.comeclose.bean.app.file.SentEmployeeBean; import com.jiuqi.mobile.nigo.comeclose.bean.app.file.ServiceFileBean; import com.jiuqi.mobile.nigo.comeclose.bean.base.AdminAreaBean; import com.jiuqi.mobile.nigo.comeclose.bean.base.RoleCode; import com.jiuqi.mobile.nigo.comeclose.bean.base.UserBean; import com.jiuqi.mobile.nigo.comeclose.manager.master.SelectRepairsFileKey; import com.jiuqi.mobile.nigo.comeclose.manager.master.SelectServiceFilesKey; import com.jiuqi.njt.R; import com.jiuqi.njt.data.MyApp; import com.jiuqi.njt.data.OptsharepreInterface; import com.jiuqi.njt.management.task.GetManagerListTask; import com.jiuqi.njt.management.task.GetManagerListWxTask; import com.jiuqi.njt.model.CModuleBean; import com.jiuqi.njt.model.ModuleType; import com.jiuqi.njt.util.Constants; import com.jiuqi.njt.util.DateUtil; import com.jiuqi.njt.util.UIUtil; import com.jiuqi.njt.widget.XListView; import com.jiuqi.njt.widget.XListView.IXListViewListener; import com.jiuqi.njt.widget.XListView.ListFooteState; /** * bxgl和wxgl列表查询 */ @SuppressLint("SimpleDateFormat") public class RepairManagementActivity extends Activity implements IXListViewListener, OnClickListener, OnScrollListener { private CModuleBean cBean; // 区别模块定制标示 private OptsharepreInterface sharePre; private AdminAreaBean xzqh;// 行政区划 private XListView xlistView; private SelectRepairsFileKey repairsFileKey = null;// 报修key private SelectServiceFilesKey serviceFilesKey;// 派工key private List<RepairsFileBean> repairFileBeanList = new ArrayList<RepairsFileBean>(); private List<ServiceFileBean> serviceFileBeanList = new ArrayList<ServiceFileBean>(); private ManagerSerAdapter listAdapter; private long startIndex = 0;// 起始索引 private int totalCount = 0;// 总记录数 private Button backLeft = null; private Button actionRight = null; private EditText etSearch = null; private ImageView ivDeleteText = null; private int tvAction = 0; // 标示 是执行搜索还是筛选标志 private boolean isFirst = true; private Button addButton; private String dealStatus = "-1"; // 处理状态 全部、已处理、未处理 -1、1、0 public static boolean canModify = false; private String s1 = "1"; private String s2 = "0"; private int height = 1; private String searchKeyWord = null;//搜索的关键字 private String actionName; private int actionNum; private SimpleDateFormat sdf; private MyApp app; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); } private void init() { initParam(); initWidget(); initListeners(); } private void initParam() { sharePre = new OptsharepreInterface(this); cBean = (CModuleBean) getIntent().getSerializableExtra( Constants.PARAM_MODULEBEAN); sdf = new SimpleDateFormat(" yyyy-MM-dd "); app = (MyApp) getApplicationContext(); if (null != app.getServicePartBeansList() && app.getServicePartBeansList().size() != 0) { app.setServicePartBeansList(null); app.setOldParts(null); } } private void initWidget() { setContentView(R.layout.manageer_list); backLeft = (Button) findViewById(R.id.backleft); actionRight = (Button) findViewById(R.id.actionright); etSearch = (EditText) findViewById(R.id.etSearch); ivDeleteText = (ImageView) findViewById(R.id.ivDeleteText); addButton = (Button) findViewById(R.id.addbtn); xlistView = (XListView) findViewById(R.id.listView); if (cBean.getModuleFlag().equals(ModuleType.bxgl)) { addButton.setVisibility(View.GONE); actionName = "增加"; actionNum = 1; } else if (cBean.getModuleFlag().equals(ModuleType.wxgl)) { getHeightParams(); actionName = "筛选"; actionNum = 2; addButton.setOnTouchListener(new MyButtonTouchListener()); } actionRight.setText(actionName); erSearchListener(); getInitData(); xlistView.setXListViewListener(this); xlistView.setPullLoadEnable(true);// 下拉刷新 xlistView.setOnScrollListener(this); } private void initListeners() { backLeft.setOnClickListener(this); actionRight.setOnClickListener(this); ivDeleteText.setOnClickListener(this); } /** * etSearch监听事件方法 */ private void erSearchListener() { etSearch.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { if (s.length() == 0) { ivDeleteText.setVisibility(View.INVISIBLE); if ("wxgl".equals(cBean.getModuleFlag() + "")) { actionName = "筛选"; actionNum = 2; } else { actionName = "增加"; actionNum = 1; } tvAction = 0; } else { ivDeleteText.setVisibility(View.VISIBLE); actionName = "搜索"; actionNum = 3; tvAction = 1; } actionRight.setText(actionName); } }); } private void getInitData() { if (cBean.getModuleFlag().equals(ModuleType.bxgl)) { repairsFileKey = new SelectRepairsFileKey(); // repairsFileKey.setRoleCode(Integer.parseInt(sharePre.getPres("role"))); repairsFileKey.setAddPersonGuid(sharePre.getPres("guid")); repairsFileKey.setSelfMobile(sharePre.getPres("mobileNumber")); repairsFileKey.setRepairManMobile(sharePre.getPres("mobileNumber")); repairsFileKey.setTroubleDetail(searchKeyWord); repairsFileKey.setFileType("2"); repairsFileKey.setDealStatus("-1"); repairsFileKey.setStartIndex(startIndex); repairsFileKey.setSize(Constants.PAGE_SIZE); } else if (cBean.getModuleFlag().equals(ModuleType.wxgl)) { // 报修key repairsFileKey = new SelectRepairsFileKey(); // repairsFileKey.setRoleCode(Integer.parseInt(sharePre.getPres("role"))); repairsFileKey.setAddPersonGuid(sharePre.getPres("guid")); repairsFileKey.setSelfMobile(sharePre.getPres("mobileNumber")); repairsFileKey.setRepairManMobile(searchKeyWord); repairsFileKey.setRepairGuid(sharePre.getPres("guid")); repairsFileKey.setFileType("1"); repairsFileKey.setDealStatus(dealStatus); repairsFileKey.setSortField(s1); repairsFileKey.setStartIndex(startIndex); repairsFileKey.setSize(Constants.PAGE_SIZE); // 派工key serviceFilesKey = new SelectServiceFilesKey(); // 维修点登陆员工登陆区分 if (sharePre.getPres("role").equals(RoleCode.Repair.getCode())|| sharePre.getPres("role").equals(RoleCode.Dealer.getCode())|| sharePre.getPres("role").equals(RoleCode.Cooper.getCode()) ||sharePre.getPres("rolesString").contains(RoleCode.Repair.getWeiyima())||sharePre.getPres("rolesString").contains(RoleCode.Dealer.getWeiyima())||sharePre.getPres("rolesString").contains(RoleCode.Cooper.getWeiyima())) { serviceFilesKey.setRepairGuid(sharePre.getPres("guid")); } else if (sharePre.getPres("role").equals(RoleCode.ReapirEmployee.getCode())|| sharePre.getPres("role").equals(RoleCode.DealerEmployee.getCode())|| sharePre.getPres("role").equals(RoleCode.CooperEmployee.getCode()) ||sharePre.getPres("rolesString").contains(RoleCode.ReapirEmployee.getWeiyima())||sharePre.getPres("rolesString").contains(RoleCode.DealerEmployee.getWeiyima())||sharePre.getPres("rolesString").contains(RoleCode.CooperEmployee.getWeiyima())){ serviceFilesKey.setSentEmployeeGuid(sharePre.getPres("guid")); } serviceFilesKey.setSortField(s2); serviceFilesKey.setRepairManMobile(searchKeyWord);// 就是搜索框 serviceFilesKey.setDealStatus(Integer.parseInt(dealStatus)); } getDataFromServer(); } private void getDataFromServer() { if (cBean.getModuleFlag().equals(ModuleType.bxgl)) { // dataList.clear(); new GetManagerListTask(RepairManagementActivity.this,cBean.getModuleFlag(), repairsFileKey, isFirst, new WhenTaskFinish() { @Override public void taskFinished(List<RepairsFileBean> data) { if(null!=data){ startIndex += data.size(); totalCount+= data.size(); } repairFileBeanList.addAll(data); isFirst = false; setFootHintText(); if (null != repairFileBeanList) { listAdapter = new ManagerSerAdapter(RepairManagementActivity.this, repairFileBeanList,AdapterType.RepairsAdapter); xlistView.setAdapter(listAdapter); } onLoad(); } }).execute(); } else if (cBean.getModuleFlag().equals(ModuleType.wxgl)) { // dataSerList.clear(); new GetManagerListWxTask(RepairManagementActivity.this, cBean.getModuleFlag(), repairsFileKey, serviceFilesKey, isFirst, new WhenTaskFinishwx() { @Override public void taskFinished(List<ServiceFileBean> result) { if(null!=result){ startIndex += result.size(); totalCount+= result.size(); } serviceFileBeanList.addAll(result); setFootHintText(); isFirst = false; if (null != serviceFileBeanList) { listAdapter = new ManagerSerAdapter(RepairManagementActivity.this, serviceFileBeanList,AdapterType.ServiceAdapter); xlistView.setAdapter(listAdapter); } onLoad(); } }).execute(); } } WhenTaskFinish taskFinish; public interface WhenTaskFinish { void taskFinished(List<RepairsFileBean> result); } WhenTaskFinish taskFinishwx; public interface WhenTaskFinishwx { void taskFinished(List<ServiceFileBean> result); } private void onLoad() { xlistView.setSelection(((int) (startIndex)) - totalCount); xlistView.stopRefresh(); xlistView.stopLoadMore(); xlistView.setRefreshTime(DateUtil.getTimeStamp(new Date(), DateUtil.MM_DD_HH_MM_SS)); } @Override public void onRefresh() { startIndex = 0; repairFileBeanList = new ArrayList<RepairsFileBean>(); serviceFileBeanList = new ArrayList<ServiceFileBean>(); getInitData(); } @Override public void onLoadMore() { if (startIndex % Constants.PAGE_SIZE == 0) { getInitData(); } else { UIUtil.showMsg(RepairManagementActivity.this, "没有更多"); onLoad(); } } public void setFootHintText() { if (totalCount == 0 ) { xlistView.setListFooteState(ListFooteState.noData); } else if(totalCount % Constants.PAGE_SIZE != 0){ xlistView.setListFooteState(ListFooteState.noMoreData); }else { xlistView.setListFooteState(ListFooteState.nomal); } xlistView.showNoData(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.backleft: RepairManagementActivity.this.finish(); break; case R.id.actionright: // bxgl中的右侧增加事件 if (cBean.getModuleFlag().equals(ModuleType.bxgl)) { switch (actionNum) { case 1: Intent inbxRi = new Intent(); inbxRi.putExtra("moduleType", cBean.getModuleFlag()); inbxRi.putExtra("differece", 1 + ""); inbxRi.setClass(RepairManagementActivity.this,FregmentFileRepair.class); startActivity(inbxRi); break; case 3: searchKeyWord = etSearch.getText().toString().trim(); actionName = "增加"; actionNum = 1; getInitData(); break; default: break; } } else if (cBean.getModuleFlag().equals(ModuleType.wxgl)) { if (tvAction == 0) { // wxgl中右侧筛选事件 UIUtil.requestQuery(RepairManagementActivity.this, xzqh,cBean.getModuleFlag()); } else { startIndex = 0; totalCount = 0; repairFileBeanList = new ArrayList<RepairsFileBean>(); serviceFileBeanList = new ArrayList<ServiceFileBean>(); searchKeyWord = etSearch.getText().toString().trim(); tvAction = 0; actionName = "筛选"; actionNum = 2; getInitData(); } } actionRight.setText(actionName); break; case R.id.ivDeleteText: etSearch.setText(""); searchKeyWord = ""; break; default: break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == Constants.REQUEST_XZQH_CODE) { if (resultCode == RESULT_OK) { repairsFileKey = (SelectRepairsFileKey) data .getSerializableExtra("SelectRepairsFileKey"); dealStatus = data.getStringExtra("dealStatus"); if (repairsFileKey.getFileType().equals("1")) { s1 = "0"; s2 = "1"; } else { s1 = "1"; s2 = "0"; } repairFileBeanList = new ArrayList<RepairsFileBean>(); serviceFileBeanList = new ArrayList<ServiceFileBean>(); startIndex = 0; totalCount =0 ; isFirst = true; getInitData(); } } } @Override protected void onResume() { super.onResume(); } class ManagerAdapter extends BaseAdapter { private List<RepairsFileBean> list; private LayoutInflater inflater; private ManagerAdapter(Context context, List<RepairsFileBean> list) { if (null != list) { this.list = list; // if(type.equals("1")){ // this.list = list; // }else{ // this.sList = list; // } } inflater = LayoutInflater.from(context); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView textTop = null; TextView textBottomLeft = null; TextView textBottomRight = null; ViewHolder holder = null; final RepairsFileBean reBean = (RepairsFileBean) list.get(position); if (null == convertView) { holder = new ViewHolder(); convertView = inflater.inflate(R.layout.repair_list_item, null); textTop = (TextView) convertView.findViewById(R.id.tvtop); textBottomLeft = (TextView) convertView .findViewById(R.id.tvleft); textBottomRight = (TextView) convertView .findViewById(R.id.tvright); holder.tvTitleTop = textTop; holder.tvTitleBottomLeft = textBottomLeft; holder.tvTitleBottomRight = textBottomRight; convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); textTop = holder.tvTitleTop; textBottomLeft = holder.tvTitleBottomLeft; textBottomRight = holder.tvTitleBottomRight; } if (null != reBean) { textBottomLeft.setText(reBean.getRepairManMobile()); textBottomRight.setText(sdf.format(reBean.getRepairsDate())); textTop.setText(reBean.getRepairServiceBean().getUserName()); convertView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 详情点击事件事件 Intent in = new Intent(); in.setClass(RepairManagementActivity.this, RepairDetailsActivity.class); in.putExtra("DetailsShow", reBean); in.putExtra("moduleType", cBean.getModuleFlag()); startActivity(in); } }); } else { holder.tvTitleTop.setText("无数据"); } return convertView; } } enum AdapterType { ServiceAdapter, RepairsAdapter } /** * 报修管理维修管理适配器 * * @author Administrator * */ class ManagerSerAdapter extends BaseAdapter { private List<ServiceFileBean> serviceFileBeanList; private List<RepairsFileBean> repairsFileBeanList; private LayoutInflater inflater; private AdapterType adapterType; @SuppressWarnings({ "rawtypes", "unchecked" }) private ManagerSerAdapter(Context context, List dataList, AdapterType type) { this.adapterType = type; if (null != dataList) { if (type == AdapterType.ServiceAdapter) { this.serviceFileBeanList = dataList; } else { this.repairsFileBeanList = dataList; } } inflater = LayoutInflater.from(context); } @Override public int getCount() { return adapterType == AdapterType.ServiceAdapter ? serviceFileBeanList .size() : repairsFileBeanList.size(); } @Override public Object getItem(int position) { return adapterType == AdapterType.ServiceAdapter ? serviceFileBeanList .get(position) : repairsFileBeanList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView textTop = null; TextView textBottomLeft = null; TextView textBottomRight = null; ViewHolder holder = null; ServiceFileBean serBean = null; RepairsFileBean reBean = null; if (adapterType == AdapterType.ServiceAdapter) { serBean = (ServiceFileBean) serviceFileBeanList.get(position); } else { reBean = (RepairsFileBean) repairsFileBeanList.get(position); } if (null == convertView) { holder = new ViewHolder(); convertView = inflater.inflate(R.layout.repair_list_item, null); textTop = (TextView) convertView.findViewById(R.id.tvtop); textBottomLeft = (TextView) convertView .findViewById(R.id.tvleft); textBottomRight = (TextView) convertView .findViewById(R.id.tvright); holder.tvTitleTop = textTop; holder.tvTitleBottomLeft = textBottomLeft; holder.tvTitleBottomRight = textBottomRight; convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); textTop = holder.tvTitleTop; textBottomLeft = holder.tvTitleBottomLeft; textBottomRight = holder.tvTitleBottomRight; } if (adapterType == AdapterType.ServiceAdapter && null != serBean) { SentEmployeeBean sentEmployeeBean = serBean .getSentEmployeeBean(); if (null != sentEmployeeBean) { RepairsFileBean repairsFileBean = sentEmployeeBean .getRepairsFileBean(); if (null != repairsFileBean) { UserBean userBean = repairsFileBean .getRepairServiceBean(); if (null != userBean) { textTop.setText(null == userBean.getUserName() ? "" : userBean.getUserName()); } textBottomRight.setText(sdf.format(repairsFileBean .getRepairsDate())); textBottomLeft.setText(null == repairsFileBean .getRepairManMobile() ? "" : repairsFileBean .getRepairManMobile()); } } convertView.setOnClickListener(new SfbOnClick(serBean)); } else if (adapterType != AdapterType.ServiceAdapter && reBean != null) { textBottomLeft.setText(null == reBean.getRepairManMobile() ? "" : reBean.getRepairManMobile()); textBottomRight.setText(sdf.format(reBean.getRepairsDate())); UserBean repairServiceBean = reBean.getRepairServiceBean(); if (null != repairServiceBean) { textTop.setText(null == repairServiceBean.getUserName() ? "" : repairServiceBean.getUserName()); } convertView.setOnClickListener(new ReOnClick(reBean)); } else { holder.tvTitleTop.setText("无数据"); } return convertView; } } class ReOnClick implements OnClickListener { private RepairsFileBean reBean = null; public ReOnClick(RepairsFileBean reBean) { this.reBean = reBean; } @Override public void onClick(View v) { // TODO Auto-generated method stub Intent in = new Intent(); in.setClass(RepairManagementActivity.this, RepairDetailsActivity.class); in.putExtra("DetailsShow", reBean); in.putExtra("moduleType", cBean.getModuleFlag()); startActivity(in); } } class SfbOnClick implements OnClickListener { private ServiceFileBean sfb; public SfbOnClick(ServiceFileBean sfb) { this.sfb = sfb; } @Override public void onClick(View v) { // TODO Auto-generated method stub Intent in = new Intent(); in.setClass(RepairManagementActivity.this, RepairDetailsActivity.class); in.putExtra("moduleType", cBean.getModuleFlag()); if (null != sfb.getSentEmployeeBean().getGuid()) { in.putExtra("guid", sfb.getSentEmployeeBean().getGuid()); in.putExtra("type", 2 + ""); } else { in.putExtra("guid", sfb.getSentEmployeeBean() .getRepairsFileBean().getGuid()); in.putExtra("type", 1 + ""); } startActivity(in); } } class ViewHolder { public TextView tvTitleTop; public TextView tvTitleBottomLeft; public TextView tvTitleBottomRight; } private class MyButtonTouchListener implements OnTouchListener { DisplayMetrics dm = getResources().getDisplayMetrics(); final int screenWidth = dm.widthPixels; final int screenHeight = dm.heightPixels - 50; int x = 0, y = 0; int lastX, lastY; @Override public boolean onTouch(View v, MotionEvent event) { int ea = event.getAction(); switch (ea) { case MotionEvent.ACTION_DOWN: lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); x = lastX; y = lastY; break; case MotionEvent.ACTION_MOVE: int dx = (int) event.getRawX() - lastX; int dy = (int) event.getRawY() - lastY; int left = v.getLeft() + dx; int top = v.getTop() + dy; int right = v.getRight() + dx; int bottom = v.getBottom() + dy; if (left < 0) { left = 0; right = left + v.getWidth(); } if (right > screenWidth) { right = screenWidth; left = right - v.getWidth(); } if (top < 0) { top = 0; bottom = top + v.getHeight(); } if (bottom > screenHeight) { bottom = screenHeight; top = bottom - v.getHeight(); } v.layout(left, top, right, bottom); lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; case MotionEvent.ACTION_UP: // 松开事件发生后执行代码的区域 if (Math.abs(lastX - x) < height / 16 && Math.abs(lastY - y) < height / 16) { Intent inwxAdd = new Intent(); inwxAdd.setClass(RepairManagementActivity.this, FregmentFileRepair.class); inwxAdd.putExtra("moduleType", cBean.getModuleFlag()); inwxAdd.putExtra("differece", 2 + ""); startActivity(inwxAdd); break; } break; } return false; } } // 列表滑动时控制新增按钮显示与隐藏 @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case OnScrollListener.SCROLL_STATE_FLING:// 滚动状态 addButton.setVisibility(View.GONE); break; case OnScrollListener.SCROLL_STATE_IDLE:// 空闲状态 if ("wxgl".equals(cBean.getModuleFlag() + "")) { addButton.setVisibility(View.VISIBLE); } break; case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:// 触摸后滚动 addButton.setVisibility(View.GONE); break; default: break; } } private void getHeightParams() { ViewTreeObserver vObserver = addButton.getViewTreeObserver(); vObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // TODO Auto-generated method stub addButton.getViewTreeObserver().removeGlobalOnLayoutListener( this); height = addButton.getHeight(); } }); } }