package com.bdyjy.fragment;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import com.bdyjy.R;
import com.bdyjy.activity.MainActivity;
import com.bdyjy.adapter.ContactListViewAdapter;
import com.bdyjy.constants.HandlerOrder;
import com.bdyjy.custom.view.XListView;
import com.bdyjy.custom.view.XListView.IXListViewListener;
import com.bdyjy.entity.contact.Contact;
import com.bdyjy.entity.contact.ContactContent;
import com.bdyjy.entity.contact.ContactDepartment;
import com.bdyjy.util.OkHttpUtils;
import com.bdyjy.util.SPUtils;
/**
* ͨѶ¼fragment
*
* @author cuicui create at 2016-03-29 0:23
*
*/
public class ContactListFragment extends Fragment implements IXListViewListener
{
Handler handler = null;
String toastMsg = null;
private View viewMain;
private LayoutInflater inflaterMain;
/* ����ͨѶ¼�б���� */
private XListView contactlistView;
private MainActivity ctx;
private ContactListViewAdapter contactListViewAdapter;
private List<Map<String, Object>> contactListItems;
private TextView tv_back;
private EditText et_search; // ����״̬�µ������
private TextView tv_search_cancel;// �ر���������
private RelativeLayout rl_searchbar_off; // �ر�״̬�µ������
private RelativeLayout rl_searchbar_on;// ����״̬�µ������
private int pageSize = 5;// ҳ����������-����
private int sizeStep = 20;// ÿ�μ��ص���Ŀ
private String searchKeys;// �����ؼ���
private boolean search_tag = false;// ��������״̬ true ��������״̬ false��������״̬
// �����������ܵ������û�н��
private void initHandler()
{
handler = new Handler(ctx.getMainLooper())
{
@Override
public void handleMessage(Message msg)
{
switch (msg.what)
{
case HandlerOrder.TOAST:
// TODO
Toast.makeText(ctx, toastMsg, Toast.LENGTH_LONG).show();
break;
case HandlerOrder.UPDATE_LISTVIEW:
contactlistView.onLoad();
loadData();
break;
case HandlerOrder.PROCESSBAR_SHOW:
ctx.showRoundProcessDialog();
break;
case HandlerOrder.PROCESSBAR_HIDE:
ctx.hideRoundProcessDialog();
break;
}
}
};
}
public ContactListFragment(MainActivity ctx)
{
this.ctx = ctx;
initHandler();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.contactlist_fragment, null);
// tv_back = (TextView) view.findViewById(R.id.tv_contact_back);
// tv_back.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// ctx.jumpToFirstPageFregment();
// }
// });
view.findViewById(R.id.ll_back).setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View v)
{
ctx.jumpToPersonalCenterFragment();
}
});
contactlistView = (XListView) view
.findViewById(R.id.department_1_contact_listview);
contactlistView.setPullLoadEnable(true);
contactlistView.setXListViewListener(this);
contactListItems = new ArrayList<Map<String, Object>>();
// ��ʼ�������
rl_searchbar_off = (RelativeLayout) view
.findViewById(R.id.searchbar_off);
rl_searchbar_on = (RelativeLayout) view.findViewById(R.id.searchbar_on);
// ����������
rl_searchbar_off.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
rl_searchbar_off.setVisibility(View.INVISIBLE);
rl_searchbar_on.setVisibility(View.VISIBLE);
et_search.setFocusable(true);
et_search.requestFocus();
// �����Զ��������뷨
InputMethodManager imm = (InputMethodManager) et_search
.getContext().getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);
Timer timer = new Timer();
timer.schedule(new TimerTask()
{
@Override
public void run()
{
InputMethodManager inputManager = (InputMethodManager) et_search
.getContext().getSystemService(
Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(et_search, 0);
}
}, 400);
}
});
tv_search_cancel = (TextView) view.findViewById(R.id.tv_search_cancel);
// �ر�������
tv_search_cancel.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
rl_searchbar_off.setVisibility(View.VISIBLE);
rl_searchbar_on.setVisibility(View.INVISIBLE);
et_search.setText("");
}
});
// �������������
et_search = (EditText) view.findViewById(R.id.et_search);
et_search.setOnEditorActionListener(new OnEditorActionListener()
{
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event)
{
Toast.makeText(ctx, "�������������Ե�", Toast.LENGTH_SHORT).show();
searchLostList();
return false;
}
});
// ѡ��ĵ���¼�
contactlistView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
// ����ѡ��ĵ���¼�
TextView tv = (TextView) view.findViewById(R.id.tv_contact_id);
System.out.println("��ȡͨѶ¼idΪ��" + id);
// �������ͨѶ¼id������ѯ�����ͨѶ¼���ݣ���ʾ����
// ��ѯ��̨
getContactContent(tv.getText().toString());
}
});
if (null == MainActivity.contactlistByDepartment)
getContactList();
else
loadData();
return view;
}
private void loadData()
{
// ���ԭ������
contactListItems.clear();
Map<String, Object> map = null;
for (int i = 0; i < MainActivity.contactlistByDepartment.size(); i++)
{
List<ContactContent> contactList = MainActivity.contactlistByDepartment
.get(i).getData();
for (int j = 0; j < contactList.size(); j++)
{
map = new HashMap<String, Object>();
// ����һ��json�л�ȡ��������
map.put("total", MainActivity.contactlistByDepartment.get(i)
.getTotal());
map.put("name", contactList.get(j).getName()); // ��Ʒ����
map.put("id", contactList.get(j).getId());
map.put("telphone", contactList.get(j).getTelphone());
map.put("office", contactList.get(j).getOffice());
map.put("telphone", contactList.get(j).getTelphone());
map.put("sex", contactList.get(j).getSex());
map.put("email", contactList.get(j).getEmail());
map.put("department", contactList.get(j).getDepartment());
contactListItems.add(map);
}
}
if (null == contactListViewAdapter)
{
contactListViewAdapter = new ContactListViewAdapter(ctx,
contactListItems); // ����������
contactlistView.setAdapter(contactListViewAdapter);
} else
{
contactListViewAdapter.refresh();
}
}
// �������װ�Ӻ�̨һ����ȡͨѶ¼�б�ķ���
private void getContactList()
{
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", "");
try
{
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_SHOW);
res = OkHttpUtils.getInstance().doGet(
ctx,
"/admin/contact/get_list.do"
+ "?token=" + token + "&singnature=" + singnature
+ "&st=" + st);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
} catch (Exception e)
{
e.printStackTrace();
toastMsg = "��ȡͨѶ¼����ʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
return;
}
System.out.println("����ͨѶ¼�����صĽ���ǣ�" + res.trim());
// ���Խ�json��ת����bean����
Contact bean = JSON.parseObject(res, Contact.class);
// System.out.println("xxxx:" + nqrb.getApp_result_key());
// ����ֵ������JSON��ʽ�����ݣ���Ҫ���������
if (res.trim().length() == 0)
{
toastMsg = "��ȡͨѶ¼�б�ʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
return;
}
String app_result_key = bean.getApp_result_key();
if ("0".equals(app_result_key))
{
// ��������˵���������������ݣ���Ҫ�������ȡͨѶ¼�ı���
List<ContactDepartment> contactlistbydepartment = bean
.getData();
// ����ЩͨѶ¼����洢��sp��
MainActivity.contactlistByDepartment = contactlistbydepartment;
// ʹ��handlerȥ֪ͨ���̸߳���listview
handler.sendEmptyMessage(HandlerOrder.UPDATE_LISTVIEW);
}
}
}.start();
}
// ��������
private void searchLostList()
{
new Thread()
{
@Override
public void run()
{
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_SHOW);
// ����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 search = et_search.getText().toString().trim();
try
{
res = OkHttpUtils.getInstance().doGet(
ctx,
"/admin/contact/get_list.do" + "?search=" + search
+ "&token=" + token + "&singnature="
+ singnature + "&st=" + st);
} catch (Exception e)
{
e.printStackTrace();
toastMsg = "��ȡ����ʧ�ܣ���������";
handler.sendEmptyMessage(HandlerOrder.TOAST);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
return;
}
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
System.out.println("����ͨѶ¼�����صĽ���ǣ�" + res.trim());
// ���Խ�json��ת����bean����
Contact bean = JSON.parseObject(res, Contact.class);
// System.out.println("xxxx:" + bean.getApp_result_key());
//
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<ContactDepartment> contactlistbydepartment = bean
.getData();
if (contactlistbydepartment.size() == 0)
{
toastMsg = "û�ҵ���Ҫ������";
handler.sendEmptyMessage(HandlerOrder.TOAST);
}
// ����ЩͨѶ¼����洢��sp��
MainActivity.contactlistByDepartment = contactlistbydepartment;
// ʹ��handlerȥ֪ͨ���̸߳���listview
handler.sendEmptyMessage(HandlerOrder.UPDATE_LISTVIEW);
// ��ʱ����
} else
{
toastMsg = "��ȡ����ʧ�ܣ���������";
handler.sendEmptyMessage(HandlerOrder.TOAST);
return;
}
}
}.start();
}
// �������װ�Ӻ�̨һ����ȡͨѶ¼���ݵķ���
private void getContactContent(final String id)
{
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", "");
try
{
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_SHOW);
res = OkHttpUtils.getInstance().doGet(
ctx,
"/admin/contact/get_list.do?id=" + id + "&token="
+ token + "&singnature=" + singnature
+ "&st=" + st);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
} catch (Exception e)
{
e.printStackTrace();
toastMsg = "��ȡͨѶ¼����ʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
return;
}
System.out.println("����ͨѶ¼���飺���صĽ���ǣ�" + res.trim() + "idΪ ��"
+ id);
ContactDepartment bean = JSON.parseObject(res,
ContactDepartment.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))// ������������ͨѶ¼������,
// ��ô��Ҫ������ȡ��ͨѶ¼�ı��⣬���ݣ���ʾ�ڽ�����
// {
ContactContent b = bean.getData().get(0);
MainActivity.contact = b;
// }
ctx.jumpToContactContentFragment();
}
}.start();
}
/**
* �������������أ�����ˢ����ش���
*/
@Override
public void onRefresh()// ����ˢ��
{
// toastMsg = "������ˢ�¶���";
// handler.sendEmptyMessage(HandlerOrder.TOAST);
// ˢ������
getContactList();
}
@Override
public void onLoadMore()// ���Ǽ��ظ���
{
// toastMsg = "���������ض���";
// handler.sendEmptyMessage(HandlerOrder.TOAST);
pageSize += sizeStep;
getContactList();
}
}