/** * */ package coolbuy360.searchhealth; import java.util.ArrayList; import java.util.List; import java.util.Map; import coolbuy360.adapter.MemberHealthFootprintListAdapter; import coolbuy360.adapter.SmartAdapter.OnDeleteItemListener; import coolbuy360.control.CusProgressDialog; import coolbuy360.control.GestureListView; import coolbuy360.logic.ConstantsSetting; import coolbuy360.logic.HealthFootprint; import coolbuy360.logic.User; import coolbuy360.service.CommandResult; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView; import android.widget.Button; import android.widget.ImageButton; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; /** * ��Ա�����㼣 * * @author yangxc * */ public class MemberHealthFootprint extends Activity implements OnItemClickListener { private static final int Action_Add = 1; private static final int Action_Edit = 2; private static final int DIALOG_Delete = 1; private int deletePosition = -1; // List<Map<String, String>> sourceList = new ArrayList<Map<String, // String>>(); GestureListView member_footprint_liv; // private Dialog pBarcheck; private CusProgressDialog pBarcheck; private int pageIndex = 1;// ���ڵڼ�ҳ���� private int pageSize = ConstantsSetting.QLDefaultPageSize;// ÿҳ��ʾ������ private boolean isloading; private Button loadMoreButton; private ProgressBar proBar; private TextView protxt; private View loadMoreView; MemberHealthFootprintListAdapter healthFootprintAdapter; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub if(resultCode == RESULT_OK) { switch (requestCode) { case Action_Add: isloading=false; pageIndex=1; new AsyLoadData().execute(); break; case Action_Edit: // �޸ijɹ��󣬸����б��е��޸�������ݣ���ˢ����ʾ Bundle resultBundle = data.getExtras(); int position = resultBundle.getInt("position"); Log.i("chenlinwei", position+""); Map<String, String> item = (Map<String, String>)healthFootprintAdapter.getItem(position); item.put("eventtime", resultBundle.getString("eventtime")); item.put("summarize", resultBundle.getString("summarize")); item.put("remarks", resultBundle.getString("remarks")); healthFootprintAdapter.notifyDataSetChanged(); break; default: break; } } super.onActivityResult(requestCode, resultCode, data); } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Log.i("chenlinwei", "�����㼣������"); setContentView(R.layout.member_health_footprint); Button savaBtn = (Button) findViewById(R.id.actionbar_add_btn); // ���÷��ذ�ť ImageButton actionbar_pre_btn = (ImageButton) this .findViewById(R.id.actionbar_pre_btn); member_footprint_liv = (GestureListView) this .findViewById(R.id.member_footprint_liv); // ������������������������������������׼����ʼ��foot_loading�ؼ������������������������������������������� loadMoreView = getLayoutInflater().inflate(R.layout.p_druglist_foot, null); loadMoreButton = (Button) loadMoreView .findViewById(R.id.p_listview_footbtn); proBar = (ProgressBar) loadMoreView.findViewById(R.id.p_probar); protxt = (TextView) loadMoreView.findViewById(R.id.p_protxt); member_footprint_liv.addFooterView(loadMoreView); // �����б�ײ���ͼ // ���ذ�ť�IJ����¼� actionbar_pre_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub MemberHealthFootprint.this.finish(); } }); // ���水ť�IJ����¼� savaBtn.setOnClickListener(new addOnClick()); new AsyLoadData().execute(); } /** * ��ʼ�������� */ private void InitAdapter(List<Map<String, String>> sourceList) { healthFootprintAdapter = new MemberHealthFootprintListAdapter(this, sourceList); member_footprint_liv.setAdapter(healthFootprintAdapter); member_footprint_liv.setOnItemClickListener(this); healthFootprintAdapter .setOnDeleteItemListener(new OnDeleteItemListener() { @Override public void onDeleteItem(View v, int position) { // TODO Auto-generated method stub deletePosition = position; showDialog(DIALOG_Delete); } }); // ���ù���ʱ�ļ����¼� member_footprint_liv.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (firstVisibleItem + visibleItemCount == totalItemCount) { if (!isloading)// ���û�м����� { loadMoreButton.setVisibility(View.GONE); proBar.setVisibility(View.VISIBLE); protxt.setVisibility(View.VISIBLE); new AsynLoader_more().execute(); } else { } } } }); } /** * ��ҳ���ظ������� */ private class AsynLoader_more extends AsyncTask<String, Void, Integer> { List<Map<String, String>> innerdruglist; @Override protected void onPreExecute() { // TODO Auto-generated method stub isloading = true; super.onPreExecute(); } @Override protected Integer doInBackground(String... params) { // TODO Auto-generated method stub try { innerdruglist = HealthFootprint.getHealthFootprintInstance() .getHFootprintList(User.getMemberID(), pageSize, pageIndex + 1); if (innerdruglist != null) { return (innerdruglist.size() > 0) ? 0 : 1; } else { return 2;// �������Ӵ��� } } catch (Exception e) { // TODO Auto-generated catch block return 2; } } @Override protected void onPostExecute(Integer result) { if (result == 0) { for (Map<String, String> item : innerdruglist) { healthFootprintAdapter.addItem(item); } if (innerdruglist.size() < pageSize) { loadMoreView.setVisibility(View.GONE); } else { loadMoreButton.setText("����"); loadMoreButton.setVisibility(View.VISIBLE); } proBar.setVisibility(View.GONE); protxt.setVisibility(View.GONE);// ����progressbar isloading = false; //healthFootprintAdapter.count += innerdruglist.size(); healthFootprintAdapter.notifyDataSetChanged(); pageIndex++; } else if (result == 1) { // ������ݼ������ if (innerdruglist.size() < pageSize) { loadMoreView.setVisibility(View.GONE); } else { loadMoreButton.setVisibility(View.VISIBLE); } // loadMoreButton.setVisibility(View.VISIBLE); loadMoreButton.setBackgroundColor(getResources().getColor( R.color.transparent)); loadMoreButton.setClickable(false); loadMoreButton.setText("û�и������ݣ�"); proBar.setVisibility(View.GONE); // ����progressbar protxt.setVisibility(View.GONE); // isloading = false; } else if (result == 2) { loadMoreButton.setVisibility(View.VISIBLE); loadMoreButton.setBackgroundColor(getResources().getColor( R.color.transparent)); loadMoreButton.setText("�������Ӵ���"); proBar.setVisibility(View.GONE); protxt.setVisibility(View.GONE);// ����progressbar isloading = false; } } } /** * ��Ӱ�ť�IJ����¼� * * @author Administrator * */ private final class addOnClick implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent().setClass(MemberHealthFootprint.this, MemberHFootprintInfo.class); Bundle bundle = new Bundle(); bundle.putString("action", "add"); intent.putExtras(bundle); // MemberHealthFootprint.this.startActivity(intent); MemberHealthFootprint.this.startActivityForResult(intent, Action_Add); } } /** * �첽�������ݲ�������ʼ��listview * * @author Administrator * */ public class AsyLoadData extends AsyncTask<String, Void, Integer> { List<Map<String, String>> innerdruglist; @Override protected void onPreExecute() { pBarcheck = new CusProgressDialog(MemberHealthFootprint.this, R.style.dialog); pBarcheck.setPregressBar(true); pBarcheck.setMessage("���ڼ�����"); pBarcheck.setCanceledOnTouchOutside(false); pBarcheck.show(); super.onPreExecute(); } @Override protected Integer doInBackground(String... params) { try { innerdruglist = HealthFootprint.getHealthFootprintInstance() .getHFootprintList(User.getMemberID(), pageSize, pageIndex); if (innerdruglist != null) { return (innerdruglist.size() > 0) ? 0 : 1; } else { return 2;// �������Ӵ��� } } catch (Exception e) { // TODO Auto-generated catch block return 2; } } @Override protected void onPostExecute(Integer result) { // TODO Auto-generated method stub if (result == 0) { InitAdapter(innerdruglist); pBarcheck.cancel(); } if(result==1) { pBarcheck.setProgressBarHide(); //��ʾ pBarcheck.SetRefreshBtnShow(); //pBarcheck.setMessage("û�м��ص����ݣ���ˢ��"); pBarcheck.SetMessagetxtShow("û�н������ݼ�¼\n���ˢ��"); pBarcheck.setCanceledOnTouchOutside(true); pBarcheck.setReFreshListener("", new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // �ٴμ��� pBarcheck.cancel(); new AsyLoadData().execute(); } }); } else { pBarcheck.setProgressBarHide(); //��ʾ pBarcheck.SetRefreshBtnShow(); pBarcheck.SetMessagetxtShow("���س���\n�������"); pBarcheck.setCanceledOnTouchOutside(true); pBarcheck.setReFreshListener("", new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // �ٴμ��� pBarcheck.cancel(); new AsyLoadData().execute(); } }); } super.onPostExecute(result); } } /** * �첽ɾ����¼ */ private class AsyncDelete extends AsyncTask<Integer, Void, Boolean> { int position = -1; CommandResult resultmessage; protected void onPreExecute() { // TODO Auto-generated method stub /* * pBarcheck = new Dialog(MemberHealthFootprint.this, * R.style.dialog); * pBarcheck.setContentView(R.layout.custom_progress); * pBarcheck.setCancelable(true); pBarcheck.show(); */ pBarcheck = new CusProgressDialog(MemberHealthFootprint.this, R.style.dialog); pBarcheck.setPregressBar(true); pBarcheck.show(); super.onPreExecute(); } @Override protected Boolean doInBackground(Integer... params) { // TODO Auto-generated method stub try { if (params.length > 0) { /* * CommandResult resultmessage = Drug.unCollect( * getBaseContext(), params[0]); return * resultmessage.getResult(); */ position = params[0]; Map<String, String> item = (Map<String, String>)healthFootprintAdapter.getItem(position); String id = item.get("id"); resultmessage =HealthFootprint.getHealthFootprintInstance().Delete(id); return resultmessage.getResult(); // ���ݿ�ɾ������ز��� } else { return false; } } catch (Exception e) { // TODO Auto-generated catch block return false; } } @Override protected void onPostExecute(Boolean result) { // TODO Auto-generated method stub if (result)// �����¼�ɹ� { member_footprint_liv.deleteSuccess(position); pBarcheck.cancel(); Toast.makeText(getBaseContext(), "ɾ���ɹ�", Toast.LENGTH_SHORT) .show(); } else { Toast.makeText(getBaseContext(),resultmessage.getMessage(), Toast.LENGTH_SHORT).show(); } } } /** * �¼����� ����flingState��ֵΪ�¼� ����posΪListView��ÿһ�� */ /* * private class setOnItemClick implements OnItemClickListener { * * @Override public void onItemClick(AdapterView<?> parent, View view, int * position, long id) { // TODO Auto-generated method stub * * } } */ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { // TODO Auto-generated method stub char flingState = member_footprint_liv.getFlingState(); Log.v("MY_TAG", "onItemClick: state=" + flingState + ", pos=" + pos); switch (flingState) { // �������¼� case GestureListView.FLING_LEFT: { // Toast.makeText( this, "Fling Left:"+pos, // Toast.LENGTH_SHORT).show(); /*Dialog dialog = new Dialog(this); dialog.setTitle("��" + pos); dialog.setCanceledOnTouchOutside(true); dialog.show();*/ member_footprint_liv.setFlingState(GestureListView.FLING_CLICK); break; } // �����һ��¼� case GestureListView.FLING_RIGHT: { // Toast.makeText( this, "Fling Right:"+pos, // Toast.LENGTH_SHORT).show(); /*Dialog dialog1 = new Dialog(this); dialog1.setTitle("�һ�" + pos); dialog1.setCanceledOnTouchOutside(true); dialog1.show();*/ member_footprint_liv.setFlingState(GestureListView.FLING_CLICK); break; } // �������¼� case GestureListView.FLING_CLICK: { switch (pos) { case 0: break; case 1: break; } //FootView Item ��� if (arg3 == -1) return; // Toast.makeText( this, "Click Item:"+pos, Map<String, String> item = (Map<String, String>)healthFootprintAdapter.getItem(pos); Intent intent = new Intent().setClass(this, MemberHFootprintInfo.class); intent.putExtra("action", "edit"); intent.putExtra("id", item.get("id")); intent.putExtra("eventtime", item.get("eventtime")); intent.putExtra("summarize", item.get("summarize")); intent.putExtra("remarks", item.get("remarks")); intent.putExtra("position", pos); startActivityForResult(intent, Action_Edit); break; } } } @Override protected Dialog onCreateDialog(int id) { // TODO Auto-generated method stub switch (id) { case DIALOG_Delete: return new AlertDialog.Builder(MemberHealthFootprint.this) .setTitle("��ʾ") .setMessage("��ȷ��Ҫɾ����¼��?") .setPositiveButton("ȷ��", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { /* User clicked OK so do some stuff */ new AsyncDelete().execute(deletePosition); } }) .setNegativeButton("ȡ��", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).create(); } return null; } }