package com.withiter.quhao.activity; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.Toast; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import com.withiter.quhao.QHClientApplication; import com.withiter.quhao.R; import com.withiter.quhao.adapter.ReservationForHistoryPaiduiAdapter; import com.withiter.quhao.adapter.ViewHolderHistoryPaidui; import com.withiter.quhao.exception.NoResultFromHTTPRequestException; import com.withiter.quhao.task.DeleteReservationsInHistoryPaiduiTask; import com.withiter.quhao.util.ActivityUtil; import com.withiter.quhao.util.StringUtils; import com.withiter.quhao.util.http.CommonHTTPRequest; import com.withiter.quhao.util.tool.ParseJson; import com.withiter.quhao.vo.ReservationVO; /** * Quhao states of Current/History * */ public class QuhaoHistoryStatesActivity extends QuhaoBaseActivity{ protected static boolean backClicked = false; private static String TAG = QuhaoHistoryStatesActivity.class.getName(); private List<ReservationVO> reservations; private ListView paiduiListView; private ReservationForHistoryPaiduiAdapter reservationForPaiduiAdapter; /** * 删除面板的layout */ private LinearLayout deleteLayout; /** * 删除按钮 */ private Button deleteBtn; /** * 选择所有按钮 */ private Button selectAllBtn; /** * 反向选择 */ private Button deselectAllBtn; /** * 取消 */ private Button cancelBtn; private int clickNum; @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.paidui_history_list_layout); super.onCreate(savedInstanceState); paiduiListView = (ListView) this.findViewById(R.id.paiduiListView); btnBack.setOnClickListener(goBack(this)); deleteBtn = (Button) this.findViewById(R.id.btn_delete); deleteBtn.setOnClickListener(this); selectAllBtn = (Button) this.findViewById(R.id.bt_selectall); selectAllBtn.setOnClickListener(this); deselectAllBtn = (Button) this.findViewById(R.id.bt_deselectall); deselectAllBtn.setOnClickListener(this); cancelBtn = (Button) this.findViewById(R.id.bt_cancel); cancelBtn.setOnClickListener(this); deleteLayout = (LinearLayout) this.findViewById(R.id.deleteMenuLayout); deleteLayout.setVisibility(View.GONE); deleteLayout.setVisibility(View.GONE); QuhaoHistoryStatesActivity.this.findViewById(R.id.loadingbar).setVisibility(View.VISIBLE); QuhaoHistoryStatesActivity.this.findViewById(R.id.serverdata).setVisibility(View.GONE); reservations = new ArrayList<ReservationVO>(); // initData(); } private void initData() { Thread thread = new Thread(new Runnable() { @Override public void run() { Looper.prepare(); try { String url = ""; String accountId = QHClientApplication.getInstance().accountInfo.accountId; url = "getHistoryMerchants?accountId=" + accountId; if (!ActivityUtil.isNetWorkAvailable(getApplicationContext())) { Toast.makeText(getApplicationContext(), R.string.network_error_info, Toast.LENGTH_SHORT).show(); reservations = new ArrayList<ReservationVO>(); reservationsUpdateHandler.obtainMessage(200, reservations).sendToTarget(); return; } String buf = CommonHTTPRequest.get(url); if (StringUtils.isNull(buf) || "[]".equals(buf)) { reservations = new ArrayList<ReservationVO>(); reservationsUpdateHandler.obtainMessage(200, reservations).sendToTarget(); unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 1000); throw new NoResultFromHTTPRequestException(); } else { reservations = new ArrayList<ReservationVO>(); reservations = ParseJson.getReservations(buf); reservationsUpdateHandler.obtainMessage(200, reservations).sendToTarget(); } } catch (Exception e) { unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 1000); e.printStackTrace(); } finally { Looper.loop(); } } }); thread.start(); } private Handler reservationsUpdateHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 200) { super.handleMessage(msg); if(null == reservations || reservations.isEmpty()) { deleteBtn.setVisibility(View.GONE); } if (null == reservationForPaiduiAdapter) { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.no_logo) .showImageForEmptyUri(R.drawable.no_logo) .showImageOnFail(R.drawable.no_logo) .cacheInMemory(true) .cacheOnDisk(true) .considerExifParams(true) .displayer(new RoundedBitmapDisplayer(20)) .build(); reservationForPaiduiAdapter = new ReservationForHistoryPaiduiAdapter(QuhaoHistoryStatesActivity.this, paiduiListView, reservations,options,animateFirstListener); paiduiListView.setAdapter(reservationForPaiduiAdapter); } else { reservationForPaiduiAdapter.rvos = reservations; } reservationForPaiduiAdapter.notifyDataSetChanged(); if (null == reservations ||reservations.isEmpty()) { Toast.makeText(QuhaoHistoryStatesActivity.this, R.string.no_result_4_quhao_history, Toast.LENGTH_SHORT).show(); } paiduiListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.e(TAG, "onclick : " + position); if(null != reservationForPaiduiAdapter && "true".equals(reservationForPaiduiAdapter.isShowDelete)) { // 取得ViewHolder对象,这样就省去了通过层层的findViewById去实例化我们需要的cb实例的步骤 ViewHolderHistoryPaidui holder = (ViewHolderHistoryPaidui) view.getTag(); // 改变CheckBox的状态 holder.cb.toggle(); // 将CheckBox的选中状况记录下来 // 调整选定条目 if (holder.cb.isChecked() == true) { reservations.get(position).isChecked = "true"; // checkNum++; } else { reservations.get(position).isChecked = "false"; // checkNum--; } } } }); QuhaoHistoryStatesActivity.this.findViewById(R.id.loadingbar).setVisibility(View.GONE); QuhaoHistoryStatesActivity.this.findViewById(R.id.serverdata).setVisibility(View.VISIBLE); unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 1000); } } }; @Override public void onClick(View v) { Log.e(TAG, "onclick before : " + isClick + " , clickNum : " + (++clickNum)); if(isClick) { return; } isClick = true; Log.e(TAG, "onclick after : " + isClick); switch(v.getId()) { case R.id.btn_delete: if(null!=reservationForPaiduiAdapter && "true".equals(reservationForPaiduiAdapter.isShowDelete)) { deleteBtn.setText(R.string.delete); deleteLayout.setVisibility(View.GONE); reservationForPaiduiAdapter.isShowDelete = "false"; /* final List<ReservationVO> rvosTemp = new ArrayList<ReservationVO>(reservations.size()); // Collections.copy(rvosTemp, reservations); // System.arraycopy(reservations, 0, rvosTemp, 0, reservations.size()); for (int i = 0; i < reservations.size(); i++) { rvosTemp.add(reservations.get(i)); } List<String> rIds = new ArrayList<String>(); Iterator<ReservationVO> iterator = rvosTemp.iterator(); String ridStr = ""; while (iterator.hasNext()) { ReservationVO temp = iterator.next(); if ("true".equals(temp.isChecked)) { rIds.add(temp.rId); ridStr = ridStr + temp.rId + ","; iterator.remove(); }*/ String ridStr = ""; if (null != reservations && !reservations.isEmpty()) { for (int i = 0; i < reservations.size(); i++) { if ("true".equals(reservations.get(i).isChecked)) { ridStr = ridStr + reservations.get(i).rId + ","; } } } Log.e(TAG, ridStr); Map<String, String> params = new HashMap<String, String>(); params.put("id", ridStr); String url = "delHistoryReservation"; final DeleteReservationsInHistoryPaiduiTask task = new DeleteReservationsInHistoryPaiduiTask(R.string.waitting,this,url,params); task.execute(new Runnable(){ @Override public void run() { // reservations = rvosTemp; Iterator<ReservationVO> iterator = reservations.iterator(); while (iterator.hasNext()) { ReservationVO temp = iterator.next(); if ("true".equals(temp.isChecked)) { iterator.remove(); } } if(!reservations.isEmpty()) { for (int i = 0; i < reservations.size(); i++) { reservations.get(i).isChecked = "false"; } } reservationForPaiduiAdapter.rvos = reservations; reservationForPaiduiAdapter.notifyDataSetChanged(); unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 10); Toast.makeText(QuhaoHistoryStatesActivity.this, R.string.delete_success, Toast.LENGTH_SHORT).show(); } },new Runnable() { @Override public void run() { if(!reservations.isEmpty()) { for (int i = 0; i < reservations.size(); i++) { reservations.get(i).isChecked = "false"; } } reservationForPaiduiAdapter.rvos = reservations; reservationForPaiduiAdapter.notifyDataSetChanged(); Toast.makeText(QuhaoHistoryStatesActivity.this, R.string.delete_failed, Toast.LENGTH_SHORT).show(); unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 10); } }); // reservationForPaiduiAdapter.notifyDataSetChanged(); } else if(null!=reservationForPaiduiAdapter && "false".equals(reservationForPaiduiAdapter.isShowDelete)) { deleteBtn.setText(R.string.confirm_delete); deleteLayout.setVisibility(View.VISIBLE); reservationForPaiduiAdapter.isShowDelete = "true"; reservationForPaiduiAdapter.notifyDataSetChanged(); unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 10); } break; case R.id.bt_selectall: if(null!=reservationForPaiduiAdapter && "true".equals(reservationForPaiduiAdapter.isShowDelete)) { deleteLayout.setVisibility(View.VISIBLE); if(null == reservations) { reservations = new ArrayList<ReservationVO>(); } if(!reservations.isEmpty()) { for (int i = 0; i < reservations.size(); i++) { reservations.get(i).isChecked = "true"; } reservationForPaiduiAdapter.rvos = reservations; reservationForPaiduiAdapter.notifyDataSetChanged(); } } unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 10); break; case R.id.bt_deselectall: if(null!=reservationForPaiduiAdapter && "true".equals(reservationForPaiduiAdapter.isShowDelete)) { deleteLayout.setVisibility(View.VISIBLE); if(null == reservations) { reservations = new ArrayList<ReservationVO>(); } if(!reservations.isEmpty()) { for (int i = 0; i < reservations.size(); i++) { if("true".equals(reservations.get(i).isChecked)) { reservations.get(i).isChecked = "false"; } else { reservations.get(i).isChecked = "true"; } } reservationForPaiduiAdapter.rvos = reservations; reservationForPaiduiAdapter.notifyDataSetChanged(); } } unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 10); break; case R.id.bt_cancel: if(null!=reservationForPaiduiAdapter && "true".equals(reservationForPaiduiAdapter.isShowDelete)) { deleteBtn.setText(R.string.delete); deleteLayout.setVisibility(View.GONE); if(null == reservations) { reservations = new ArrayList<ReservationVO>(); } reservationForPaiduiAdapter.isShowDelete = "false"; if(!reservations.isEmpty()) { for (int i = 0; i < reservations.size(); i++) { reservations.get(i).isChecked = "false"; } reservationForPaiduiAdapter.rvos = reservations; reservationForPaiduiAdapter.notifyDataSetChanged(); } } unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 10); break; default: unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 10); break; } } @Override public boolean onTouch(View v, MotionEvent event) { return false; } @Override protected void onResume() { backClicked = false; QuhaoHistoryStatesActivity.this.findViewById(R.id.loadingbar).setVisibility(View.VISIBLE); QuhaoHistoryStatesActivity.this.findViewById(R.id.serverdata).setVisibility(View.GONE); deleteBtn.setText(R.string.delete); deleteLayout.setVisibility(View.GONE); if (null != reservationForPaiduiAdapter) { reservationForPaiduiAdapter.isShowDelete = "false"; } initData(); super.onResume(); } @Override protected void onPause() { super.onPause(); } @Override protected void onDestroy() { super.onDestroy(); } }