/** * VenueBookingFragment.java[v 1.0.0] * class:com.bdyjy.fragment,VenueBookingFragment * �ܺ� create at 2016-4-5 ����2:50:41 */ package com.bdyjy.fragment; import java.util.HashMap; import java.util.List; import java.util.Map; import android.annotation.SuppressLint; import android.app.AlertDialog; import android.app.Dialog; import android.app.Fragment; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.alibaba.fastjson.JSON; import com.bdyjy.R; import com.bdyjy.activity.MainActivity; import com.bdyjy.constants.HandlerOrder; import com.bdyjy.entity.venue.Data; import com.bdyjy.entity.venue.ListRoom; import com.bdyjy.entity.venue.VenueQueryResultBean; import com.bdyjy.util.DateUtil; import com.bdyjy.util.DialogUtil; import com.bdyjy.util.OkHttpUtils; import com.bdyjy.util.SPUtils; /** * com.bdyjy.fragment.VenueBookingFragment * * @author �ܺ�<br/> * create at 2016-4-5 ����2:50:41 */ public class VenueBookingFragment extends Fragment { private MainActivity ctx; // private List<VenueRecordBean> list = new ArrayList<VenueRecordBean>(); private Map<String, String> map = new HashMap<String, String>(); private String date = DateUtil.getDateOfToday(); List<Data> list; private Handler handler = null; private List<ListRoom> listRoom; private void initHandler() { handler = new Handler(ctx.getMainLooper()) { @Override public void handleMessage(Message msg) { switch (msg.what) { case HandlerOrder.TOAST: Toast.makeText(ctx, toastMsg, Toast.LENGTH_LONG).show(); break; case HandlerOrder.UPDATE_LISTVIEW:// ��ȡ���ݳɹ�֮�󣬻ص����������ͼ initTable(); break; case HandlerOrder.PROCESSBAR_SHOW: ctx.showRoundProcessDialog(); break; case HandlerOrder.PROCESSBAR_HIDE: ctx.hideRoundProcessDialog(); break; case HandlerOrder.PUBLIC_FLAG: TextView tv_v1 = (TextView) viewMain .findViewById(R.id.tv_v1); TextView tv_v2 = (TextView) viewMain .findViewById(R.id.tv_v2); TextView tv_v3 = (TextView) viewMain .findViewById(R.id.tv_v3); tv_v1.setText(listRoom.get(0).getName()); tv_v2.setText(listRoom.get(1).getName()); tv_v3.setText(listRoom.get(2).getName()); break; } } }; } // // ��������� // private Dialog mDialog; // // public void showRoundProcessDialog() // { // mDialog = new AlertDialog.Builder(ctx).create(); // mDialog.setCancelable(false); // // mDialog.setOnKeyListener(keyListener); // mDialog.show(); // // ע��˴�Ҫ����show֮�� ����ᱨ�쳣 // mDialog.setContentView(R.layout.loading_process_dialog_anim); // } // // public void hideRoundProcessDialog() // { // if (null != mDialog && mDialog.isShowing()) // mDialog.hide(); // } /** * */ public VenueBookingFragment(MainActivity ctx) { this.ctx = ctx; initHandler(); } private View viewMain; private LayoutInflater inflater; @SuppressLint("InflateParams") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { this.inflater = inflater; viewMain = inflater.inflate(R.layout.venue_booking, null); // ����������� TextView tv = (TextView) viewMain.findViewById(R.id.tv_title); tv.setText("����Ԥ��"); // ���ذ�ť����¼� viewMain.findViewById(R.id.tv_back).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { if ("lake".equals(MainActivity.orderFrom)) { ctx.jumpToLakesideFragment(); MainActivity.orderFrom = ""; } else { ctx.jumpToFirstPageFregment(); } } }); viewMain.findViewById(R.id.ll_my).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { ctx.jumpToVenueBookingMyFregment(); } }); // ���������л�Ч�� final View ll_1 = viewMain.findViewById(R.id.ll_1); final View ll_2 = viewMain.findViewById(R.id.ll_2); ll_1.setOnClickListener(new OnClickListener() { @SuppressLint("NewApi") @Override public void onClick(View v) { ll_1.setBackground(getResources().getDrawable( R.drawable.selected_item_bg2)); ll_2.setBackground(getResources().getDrawable( R.drawable.not_selected_item_bg2)); // �������²�ѯ���� TextView tv_date = (TextView) viewMain .findViewById(R.id.tv_today_date); date = tv_date.getText().toString(); System.out.println("date:" + date); queryVenue(date); } }); ll_2.setOnClickListener(new OnClickListener() { @SuppressLint("NewApi") @Override public void onClick(View v) { ll_2.setBackground(getResources().getDrawable( R.drawable.selected_item_bg2)); ll_1.setBackground(getResources().getDrawable( R.drawable.not_selected_item_bg2)); TextView tv_date = (TextView) viewMain .findViewById(R.id.tv_tomorrow_date); date = tv_date.getText().toString(); queryVenue(date); } }); // Ԥ����ť����¼� viewMain.findViewById(R.id.ll_book_now).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // ����Ƿ��Ѿ�ѡ���˳��� if (map.size() > 0) { MainActivity.venueBookingResultMap = map; MainActivity.order_data_from = "VenueBookingFragment";// ��ǣ��Ǵ�list������ ctx.jumpToVenueBookingPayMyFregment(); } else { Toast.makeText(ctx, "�㻹ûѡ�񳡹�", Toast.LENGTH_SHORT) .show(); } } }); // View ll_pervious = viewMain.findViewById(R.id.ll_previous); View ll_next = viewMain.findViewById(R.id.ll_next); // �����ǰһ�죬��ǰ��ʾ��2�����ڣ�����ǰŲһ�죬�������¸������� ll_pervious.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { offset--;// ����ƫ���� TextView tv_today_day = (TextView) viewMain .findViewById(R.id.tv_today_day); tv_today_day.setText(DateUtil.getDayOfTodayByOffset(offset)); // ���켸�� TextView tv_today_date = (TextView) viewMain .findViewById(R.id.tv_today_date); tv_today_date.setText(DateUtil.getDateOfTodayByOffset(offset)); // �������ڼ� TextView tv_tomorrow_day = (TextView) viewMain .findViewById(R.id.tv_tomorrow_day); tv_tomorrow_day.setText(DateUtil .getDayOfTomorrowByOffset(offset)); // ���켸�� TextView tv_tomorrow_date = (TextView) viewMain .findViewById(R.id.tv_tomorrow_date); tv_tomorrow_date.setText(DateUtil .getDateOfTomorrowByOffset(offset)); // ���Ҹ��µ�ǰ���� date = tv_today_date.getText().toString(); queryVenue(date); } }); // ����һ�죬ͬ��,���Ųһ�첢�����¸������� ll_next.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { offset++; TextView tv_today_day = (TextView) viewMain .findViewById(R.id.tv_today_day); tv_today_day.setText(DateUtil.getDayOfTodayByOffset(offset)); // ���켸�� TextView tv_today_date = (TextView) viewMain .findViewById(R.id.tv_today_date); tv_today_date.setText(DateUtil.getDateOfTodayByOffset(offset)); // �������ڼ� TextView tv_tomorrow_day = (TextView) viewMain .findViewById(R.id.tv_tomorrow_day); tv_tomorrow_day.setText(DateUtil .getDayOfTomorrowByOffset(offset)); // ���켸�� TextView tv_tomorrow_date = (TextView) viewMain .findViewById(R.id.tv_tomorrow_date); tv_tomorrow_date.setText(DateUtil .getDateOfTomorrowByOffset(offset)); date = tv_tomorrow_date.getText().toString(); queryVenue(date); } }); // TODO ���Dz��Դ��� queryVenue(date); return viewMain; } // �������װ�Ӻ�̨һ����ȡ�������ݵķ��� String toastMsg; int offset = 0;// ����ƫ���� /** * �̣߳����ҵ�ǰ����Ԥ����� * * @param id */ private void queryVenue(final String date) { new Thread() { @Override public void run() { // ����get���� String res = null; // ��sharePreference��ȡ��֮ǰ�洢�IJ��� String token = (String) SPUtils.get(ctx, "token", ""); String singnature = (String) SPUtils.get(ctx, "singnature", ""); String st = (String) SPUtils.get(ctx, "st", ""); String httpStr = "/admin/appointmenrecord/initByDate.do?appDate=" + date + "&token=" + token + "&singnature=" + singnature + "&st=" + st; System.out.println(httpStr); try { handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_SHOW); res = OkHttpUtils.getInstance().doGet(ctx, httpStr); handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE); } catch (Exception e) { e.printStackTrace(); toastMsg = "��ȡ����ʧ��"; handler.sendEmptyMessage(HandlerOrder.TOAST); return; } VenueQueryResultBean bean = JSON.parseObject(res, VenueQueryResultBean.class); // ����ֵ������JSON��ʽ�����ݣ���Ҫ��������� if (res.trim().length() == 0) { toastMsg = "��ȡ����ʧ��"; handler.sendEmptyMessage(HandlerOrder.TOAST); return; } String app_result_key = bean.getApp_result_key(); if ("0".equals(app_result_key))// ���������������ŵ�����, // ��ô��Ҫ������ȡ�����ŵı��⣬���ݣ���ʾ�ڽ����� { list = bean.getData();// �������Ҫչʾ������ // TODO listRoom = bean.getListRoom(); handler.sendEmptyMessage(HandlerOrder.PUBLIC_FLAG); handler.sendEmptyMessage(HandlerOrder.UPDATE_LISTVIEW); } } }.start(); } /** * �����ݼ��ص������ * * @param list */ @SuppressLint("InflateParams") private void initTable() { // ÿһ�θ���table���ݣ���Ҫ�Ȱ� �ɵ��ύ������� if (map != null) { map.clear(); } LinearLayout ll_item_list = (LinearLayout) viewMain .findViewById(R.id.ll_item_list); ll_item_list.removeAllViews(); // ����ѡ������趨:��ȡ�������������ڣ����һ������ // �������ڼ� TextView tv_today_day = (TextView) viewMain .findViewById(R.id.tv_today_day); tv_today_day.setText(DateUtil.getDayOfTodayByOffset(offset)); // ���켸�� TextView tv_today_date = (TextView) viewMain .findViewById(R.id.tv_today_date); tv_today_date.setText(DateUtil.getDateOfTodayByOffset(offset)); // �������ڼ� TextView tv_tomorrow_day = (TextView) viewMain .findViewById(R.id.tv_tomorrow_day); tv_tomorrow_day.setText(DateUtil.getDayOfTomorrowByOffset(offset)); // ���켸�� TextView tv_tomorrow_date = (TextView) viewMain .findViewById(R.id.tv_tomorrow_date); tv_tomorrow_date.setText(DateUtil.getDateOfTomorrowByOffset(offset)); // ���س������� int index = 0; for (Data d : list) { String timeId = d.getId();// TODO �������ʱ��id String time = d.getStartTime() + " - " + d.getEndTime();// ʱ���ֵ View sperator = inflater.inflate(R.layout.item_sperator, null); ll_item_list.addView(sperator); View item = inflater.inflate(R.layout.venue_booking_item1, null); TextView tv_time = (TextView) item.findViewWithTag("time"); tv_time.setText(time); // �������ȡͨ��tag����ȡ�ڵ㣬Ȼ������¼� String sx1 = "�����_"; String sx2 = "�����_"; String sx3 = "��ë���_"; String[] tags = { sx1 + index, sx2 + index, sx3 + index }; item.findViewWithTag(sx1).setTag(sx1 + index); item.findViewWithTag(sx2).setTag(sx2 + index); item.findViewWithTag(sx3).setTag(sx3 + index); // ����Ӽ����¼�֮ǰ���ȶ�ѡ���tag���б�� List<ListRoom> listRoom = d.getListRoom();// ����ÿ�����ݵ���Ϣ String[] flags = new String[3]; String[] prices = new String[3]; String[] roomId = new String[3]; for (int ix = 0; ix < listRoom.size(); ix++) { flags[ix] = listRoom.get(ix).getFlag();// ����״̬��-1�ѹ��� 0��ԤԼ 1��ԤԼ prices[ix] = listRoom.get(ix).getPrice();// ԤԼ�۸� roomId[ix] = listRoom.get(ix).getId();// ����id } // TEST ���Դ��� // flags = new String[] // { "0", "0", "0" }; for (int iy = 0; iy < tags.length; iy++) { View iv = item.findViewWithTag(tags[iy]); // ���ж�״̬�������0����ԤԼ����ֱ�Ӹ������¼����������0����ֱ�չʾ��Ӧ���ݣ��ѹ��ڣ���ԤԼ�� if (flags[iy].equals("0")) { setItemCanAppointment(iv); iv.setOnClickListener(new MyOnClickListener(ll_item_list, item, tags, tags[iy], timeId, time, prices[iy], roomId[iy])); } else if (flags[iy].equals("-1"))// �ѹ��� { // ֻ��ʾ�ѹ���view������������ // �л�item״̬ setItemExpired(iv); } else if (flags[iy].equals("1"))// ��ԤԼ { // ֻ��ʾ��ԤԼview������������ setItemAppointmented(iv); } } ll_item_list.addView(item); index++; } } /** * ����Ϊ��ԤԼ */ private void setItemCanAppointment(View v) { View v_checked = v.findViewWithTag("checked"); v_checked.setVisibility(View.GONE); View v_not_checked = v.findViewWithTag("not_checked"); v_not_checked.setVisibility(View.VISIBLE); View v_expired = v.findViewWithTag("expired"); v_expired.setVisibility(View.GONE); View v_appointmented = v.findViewWithTag("appointmented"); v_appointmented.setVisibility(View.GONE); } /** * ����Ϊ�ѹ��� */ private void setItemExpired(View v) { View v_checked = v.findViewWithTag("checked"); v_checked.setVisibility(View.GONE); View v_not_checked = v.findViewWithTag("not_checked"); v_not_checked.setVisibility(View.GONE); View v_expired = v.findViewWithTag("expired"); v_expired.setVisibility(View.VISIBLE); View v_appointmented = v.findViewWithTag("appointmented"); v_appointmented.setVisibility(View.GONE); } /** * ����Ϊ��ԤԼ */ private void setItemAppointmented(View v) { View v_checked = v.findViewWithTag("checked"); v_checked.setVisibility(View.GONE); View v_not_checked = v.findViewWithTag("not_checked"); v_not_checked.setVisibility(View.GONE); View v_expired = v.findViewWithTag("expired"); v_expired.setVisibility(View.GONE); View v_appointmented = v.findViewWithTag("appointmented"); v_appointmented.setVisibility(View.VISIBLE); } private class MyOnClickListener implements OnClickListener { View ll_item_list; String thisTag; String[] tags; View item; String timeId; String timeStr; String price; String roomId; MyOnClickListener(View ll_item_list, View item, String[] tags, String thisTag, String timeId, String timeStr, String price, String roomId) { this.ll_item_list = ll_item_list; this.item = item; this.tags = tags; this.thisTag = thisTag; this.timeId = timeId; this.timeStr = timeStr; this.price = price; this.roomId = roomId; } private final static int STATUS_CHECKED = 1; private final static int STATUS_NOT_CHECKED = 0; /** * ��ȡ��ǰ��������Ҫѡ�У�����Ҫȡ����ѡ�з���1��ȡ������0 * * @param v * @return */ private int getAction(View v) { int x = -1; // ��ȡ ��ǰ���� View v_checked = v.findViewWithTag("checked"); if (v_checked.getVisibility() == View.VISIBLE) { x = STATUS_NOT_CHECKED; } else { x = STATUS_CHECKED; } View v_not_checked = v.findViewWithTag("not_checked"); if (v_not_checked.getVisibility() == View.VISIBLE) { x = STATUS_CHECKED; } else { x = STATUS_NOT_CHECKED; } return x; } private void switchToChecked(View v) { View v_checked = v.findViewWithTag("checked"); v_checked.setVisibility(View.VISIBLE); View v_not_checked = v.findViewWithTag("not_checked"); v_not_checked.setVisibility(View.GONE); } private void switchToNotChecked(View v) { View v_checked = v.findViewWithTag("checked"); v_checked.setVisibility(View.GONE); View v_not_checked = v.findViewWithTag("not_checked"); v_not_checked.setVisibility(View.VISIBLE); } @Override public void onClick(View v) { int x = getAction(v); String mapkey = date + "&" + timeId + "&" + timeStr; if (x == STATUS_CHECKED)// ���������ѡ�е�ǰ�� { if (map.size() == 1)// ���map���Ѿ���һ��ѡ�еļ�¼����ǰ��Ҫ����һ��ѡ�м�¼�Ļ����ж������Ƿ���ͬһ�����أ��������ͬһ�����أ���ȡ���Ѿ�ѡ�е��Ǹ��� { String already_checked_item_tag = null;// �Ѿ�ѡ�е�item��tag String time = null; // ���ж������Ƿ���ͬһ������ for (String key : map.keySet()) { time = key; already_checked_item_tag = map.get(key); } String sux = already_checked_item_tag.split("&")[0] .split("_")[0]; String sux2 = thisTag.split("_")[0]; if (sux.equals(sux2))// ���ж������Ƿ���ͬһ������ { // �����ͬһ�����أ��������� } else { // �������ͬһ�����أ���ȡ��֮ǰ���Ǹ� switchToNotChecked(ll_item_list .findViewWithTag(already_checked_item_tag .split("&")[0])); map.remove(time); } } if (map.size() == 2) { Toast.makeText(ctx, "���ѡ��2��ʱ��,����ȡ��֮����ѡ������", Toast.LENGTH_SHORT).show(); return; } switchToChecked(v); for (String tag : tags)// ���Ҽ�⣬�����ǰ���ر�ѡ�����������Զ���������¼� { if (!tag.equals(thisTag)) { switchToNotChecked(item.findViewWithTag(tag)); } } map.put(mapkey, thisTag + "&" + price + "&" + roomId); } else { map.remove(mapkey); switchToNotChecked(v); } System.out.println("ͨ��Map.keySet����key��value��"); for (String key : map.keySet()) { System.out.println("key= " + key + " and value= " + map.get(key)); } } } }