package com.bdyjy.fragment;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import com.alibaba.fastjson.JSONArray;
import com.bdyjy.R;
import com.bdyjy.activity.MainActivity;
import com.bdyjy.adapter.ClassroomAdapter;
import com.bdyjy.adapter.ClassroomContentAdapter;
import com.bdyjy.constants.HandlerOrder;
import com.bdyjy.entity.coursequery.Course;
import com.bdyjy.entity.coursequery.CourseQueryResultBean;
import com.bdyjy.util.DateUtil;
import com.bdyjy.util.Util;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Fragment;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.ContactsContract.Contacts.Data;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.DatePicker;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class ClassroomQueryFragment extends Fragment
{
Handler handler = null;
String toastMsg = null;
private MainActivity ctx;
private String date;
private static final String[] mDate =
{ "����", "����", "����" };
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_SHORT).show();
break;
case HandlerOrder.UPDATE_LISTVIEW:
loadData();
break;
case HandlerOrder.PROCESSBAR_SHOW:
ctx.showRoundProcessDialog();
break;
case HandlerOrder.PROCESSBAR_HIDE:
ctx.hideRoundProcessDialog();
break;
default:
break;
}
}
};
}
public ClassroomQueryFragment(MainActivity ctx)
{
this.ctx = ctx;
initHandler();
}
private ListView listView;
private ClassroomAdapter adapter;
// �����б�
private List<List<Map<String, Object>>> classroomListItems;
// �γ��б�
private List<Map<String, Object>> contentListItems;
private Spinner sp_date;
private TextView tv_back;
private TextView tv_date;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.classroom_query_fragment, null);
// tv_back = (TextView) view.findViewById(R.id.classroom_query_tv_back);
// tv_back.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v)
// {
// ctx.jumpToFirstPageFregment();
// }
// });
view.findViewById(R.id.ll_classroom_query_tv_back).setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View v)
{
ctx.jumpToFirstPageFregment();
}
});
sp_date = (Spinner) view.findViewById(R.id.date_spinner);
tv_date = (TextView) view.findViewById(R.id.classroom_query_date);
String yesterday = DateUtil.getDateOfYesterday2();
String today = DateUtil.getDateOfToday2();
String tomorrow = DateUtil.getDateOfTomorrow2();
String[] mDate2 =
{ "����" + " " + yesterday, "����" + " " + today,
"����" + " " + tomorrow };
ArrayAdapter<String> dateAdapter = new ArrayAdapter<String>(ctx,
android.R.layout.simple_spinner_item, mDate2);
dateAdapter
.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
sp_date.setAdapter(dateAdapter);
// Ĭ��Ϊ����
sp_date.setSelection(1);
tv_date.setText(DateUtil.getDateOfToday());
sp_date.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id)
{
switch (position)
{
case 0:
date = DateUtil.getDateOfYesterday();
break;
case 1:
date = DateUtil.getDateOfToday();
break;
case 2:
date = DateUtil.getDateOfTomorrow();
break;
}
tv_date.setText(date);
updateData();
}
public void onNothingSelected(AdapterView<?> parent)
{
tv_date.setText("ûѡ�е�");
}
});
//
// tv_date.setText(DateUtil.getDateOfToday()); // ����Ĭ������Ϊ����
// tv_date.setOnClickListener(new OnClickListener() {
// public void onClick(View v) {
// Calendar calendar = Calendar.getInstance();
// new DatePickerDialog(ctx, AlertDialog.THEME_HOLO_LIGHT, new
// DatePickerDialog.OnDateSetListener() {
// @Override
// public void onDateSet(DatePicker view, int year, int month, int day)
// {
//
// //�����������ڣ�С��10��0�����ڴ���url�������
// date = new String(new StringBuilder().append(year).append("-")
// .append((month + 1) < 10 ? "0" + (month + 1) : (month + 1))
// .append("-")
// .append((day < 10) ? "0" + day : day));
//
// tv_date.setText(date);
// updateData();
// }
// }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
// calendar.get(Calendar.DAY_OF_MONTH) ).show();
//
// }
// });
listView = (ListView) view.findViewById(R.id.classroom_list);
classroomListItems = new ArrayList<List<Map<String, Object>>>();
// ѡ��ĵ���¼�
listView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
// ����¼�
}
});
updateData();
return view;
}
private void updateData()
{
getClassroomList();
loadData();
}
private void loadData()
{
Map<String, Object> contentMap = null;
// �����б�
classroomListItems.clear();
for (String key : MainActivity.classroomMap.keySet())
{
Log.d("key", key);
// һ����ҵĿγ��б�
contentListItems = new ArrayList<Map<String, Object>>();
contentListItems.clear();
for (int j = 0; j < MainActivity.classroomMap.get(key).size(); ++j)
{
contentMap = new HashMap<String, Object>();
contentMap.put("courseTime", MainActivity.classroomMap.get(key)
.get(j).getStime()
+ "-"
+ MainActivity.classroomMap.get(key).get(j).getEtime());
Log.e("TIME", contentMap.get("courseTime").toString());
contentMap.put("courseName", MainActivity.classroomMap.get(key)
.get(j).getCourse_name());
contentMap.put("classroomName",
MainActivity.classroomMap.get(key).get(j)
.getClassroom_name());
contentListItems.add(contentMap);
}
classroomListItems.add(contentListItems);
Log.e("contentListItems",
contentListItems.get(0).get("classroomName").toString());
}
for (List<Map<String, Object>> list : classroomListItems)
{
Log.e("classroomListItems", list.get(0).get("classroomName")
.toString());
}
if (null == adapter)
{
adapter = new ClassroomAdapter(ctx, contentListItems,
classroomListItems); // ����������
listView.setAdapter(adapter);
} else
{
adapter.refresh(classroomListItems);
}
}
// �������ȡ�����б�
private void getClassroomList()
{
Thread thread = new Thread()
{
@Override
public void run()
{
String res = null;
String interfaceUrl = "http://ss.pkusz.edu.cn/events/get_data?time_now=";
StringBuilder builder = new StringBuilder()
.append(interfaceUrl).append(
tv_date.getText().toString());
String fullUrl = new String(builder);
Log.d("url", fullUrl);
Request request = new Request.Builder().url(fullUrl).build();
OkHttpClient mOkHttpClient = new OkHttpClient();
Response response;
try
{
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_SHOW);
response = mOkHttpClient.newCall(request).execute();
if (response.isSuccessful())
{
String body = response.body().string();
res = body;
} else
{
res = "error";
toastMsg = "��ȡ������Ϣʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
return;
}
} catch (IOException e)
{
e.printStackTrace();
} finally
{
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
}
System.out.println("�������ţ����صĽ���ǣ�" + res.trim());
List<CourseQueryResultBean> resultList = new ArrayList<CourseQueryResultBean>();
resultList = JSONArray.parseArray(res,
CourseQueryResultBean.class);
// ���ڴ�Ž��������Ľ�������
TreeMap<String, List<Course>> map = new TreeMap<String, List<Course>>();
int i = 0;
for (CourseQueryResultBean item : resultList)
{
// ��ѯ�ÿγ̵Ľ����Ƿ��ڽ���Map�б��С�
Course course = item.getEvent();
String classroomName = course.getClassroom_name();
if (map.containsKey(classroomName))
{ // ������Ҵ���
map.get(classroomName).add(course);
Log.d("classroomName", "run if");
} else
{ // ������Ҳ�����
List<Course> list = new ArrayList<Course>();
list.add(course);
map.put(classroomName, list);
}
}
// for(String key : map.keySet()) {
// Log.d("key", key);
// }
MainActivity.classroomMap = map;
handler.sendEmptyMessage(HandlerOrder.UPDATE_LISTVIEW);
}
};
thread.start();
try
{
thread.join();
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}