package coolbuy360.searchhealth; import java.util.List; import java.util.Map; import com.baidu.location.BDLocationListener; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.net.Uri; 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.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; import coolbuy360.adapter.detailListViewAdapter; import coolbuy360.control.MyShowImgDialog; import coolbuy360.logic.AppConfig; import coolbuy360.logic.ConstantsSetting; import coolbuy360.logic.Drug; import coolbuy360.service.AaynImageLoaderUtil; import coolbuy360.service.ImageManager; import coolbuy360.service.LocationInfo; import coolbuy360.service.LocationProvider; import coolbuy360.service.SetImgResoruce; import coolbuy360.service.Util; import coolbuy360.service.searchApp; @SuppressLint("NewApi") public class DrugProductDetail extends Activity { private ListView drugstorelist_listview; private Button loadMoreButton; private View loadMoreView; private ProgressBar proBar; private TextView protxt; private LinearLayout p_detail_relativelayouy; private ImageButton p_detaillocal_btn_P; private ImageButton p_detailinstruction_btn_P; String drug_name = null; String drug_id = null; String drug_store = null; String drug_imgurl = null; String drug_otc = null; String drug_h = null; String drug_bao = null; String serisecode = null; Bundle bundle = null; private int pageIndex = 0; private int pagesize = ConstantsSetting.QLDefaultPageSize; private boolean isloading; private String url_path_s; private String url_path_b; int searchRang; int ishc; LinearLayout async_begin; LinearLayout async_error; private LocationProvider innerLocationProvider = null; LocationInfo.SItude station = null; /*protected double latitude = 30.280506; protected double longitude = 120.107582;*/ protected double latitude = 0.0; protected double longitude = 0.0; private detailListViewAdapter adapter; BDLocationListener mLocationListener = null;// createʱע���listener��Destroyʱ��ҪRemove @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); innerLocationProvider = searchApp.mLocationProvider; // Ϊ�˳���׼�� searchApp.getInstance().addActivity(this); setContentView(R.layout.drugproduct_detail); /******************* ��ȡ�ϼ���������ֵ *********************/ bundle = getIntent().getExtras(); drug_name = bundle.getString("drugname"); drug_id = bundle.getString("drugid"); drug_store = bundle.getString("drugstore"); drug_imgurl = bundle.getString("drugimg"); drug_h = bundle.getString("h"); drug_otc = bundle.getString("otc"); drug_bao = bundle.getString("bao"); serisecode = bundle.getString("serisecode"); this.url_path_s = Util.getDrugSmallImgPath(); this.url_path_b = Util.getDrugBigImgPath(); p_detaillocal_btn_P = (ImageButton) this .findViewById(R.id.p_detaillocal_btn_P); p_detailinstruction_btn_P = (ImageButton) this .findViewById(R.id.p_detailinstruction_btn_P); p_detaillocal_btn_P.setVisibility(View.GONE); // ���ص�ͼģʽ��ť p_detailinstruction_btn_P.setVisibility(View.GONE); // ����˵���鰴ť /*** ���ظ���İ�ť ***/ loadMoreView = getLayoutInflater().inflate(R.layout.p_druglist_foot, null); loadMoreButton = (Button) loadMoreView .findViewById(R.id.p_listview_footbtn); /***** ��ʾloading���� *****/ proBar = (ProgressBar) loadMoreView.findViewById(R.id.p_probar); protxt = (TextView) loadMoreView.findViewById(R.id.p_protxt); drugstorelist_listview = (ListView) this.findViewById(R.id.drugstorelist_listview); drugstorelist_listview.addFooterView(loadMoreView);// ImageButton actionbar_pre_btn = (ImageButton) this .findViewById(R.id.actionbar_pre_btn); actionbar_pre_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub DrugProductDetail.this.finish(); } }); p_detail_relativelayouy = (LinearLayout) this .findViewById(R.id.p_detail_relativelayouy); async_begin = (LinearLayout) findViewById(R.id.async_begin); async_begin.setVisibility(View.VISIBLE); async_error = (LinearLayout) findViewById(R.id.async_error); // ��õ�ǰ AppConfig config = new AppConfig(getBaseContext()); searchRang = config.getStore_SearchRange(getBaseContext()); ishc = config.getStore_IsHC(getBaseContext()); /********* �ж��Ƿ������ɨ����� *********/ if (serisecode == null) { new AsyLoadStore().execute(1); initdata(drug_name, drug_store, drug_imgurl); p_detailinstruction_btn_P.setVisibility(View.VISIBLE); // ��ʾ˵���鰴ť } else { new AsyLoad().execute(); } // RelativeLayout����¼� p_detail_relativelayouy.setOnClickListener(new descriptionOnclick()); ImageButton btnDescription = (ImageButton) this .findViewById(R.id.p_detailinstruction_btn_P); btnDescription.setOnClickListener(new descriptionOnclick()); ImageButton btnLocal = (ImageButton) this .findViewById(R.id.p_detaillocal_btn_P); // ��λ��ť�¼� btnLocal.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent mapintent = new Intent().setClass( DrugProductDetail.this, DrugStoreMap.class); Bundle innerbundle = new Bundle(); innerbundle.putString("loadmode", DrugStoreMap.LoadMode.ShowByDrug.toString()); innerbundle.putString("drugid", drug_id); mapintent.putExtras(innerbundle); startActivity(mapintent); } }); } /** * RelativeLayout����¼� * * @author chenlw * */ private final class descriptionOnclick implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub bundle = new Bundle(); bundle.putString("drugid", drug_id); bundle.putString("drugname", drug_name); bundle.putString("drugstore", drug_store); bundle.putString("drugimg", drug_imgurl); bundle.putString("h", drug_h); bundle.putString("otc", drug_otc); bundle.putString("bao", drug_bao); Intent DescriptionIntent = new Intent().setClass( DrugProductDetail.this, DrugProductDescription.class); DescriptionIntent.putExtras(bundle); startActivity(DescriptionIntent); } } /** *��ʼ������ */ private void initdata(String name, String store, String imgurl) { final String timgurl = imgurl; // TODO Auto-generated method stub TextView drug_title = (TextView) this.findViewById(R.id.p_detail_title); TextView drug_store = (TextView) this.findViewById(R.id.p_detail_store); ImageView drug_img = (ImageView) this.findViewById(R.id.p_detail_img); ImageView p_detail_bao = (ImageView) this .findViewById(R.id.p_detail_bao); ImageView p_detail_h = (ImageView) this.findViewById(R.id.p_detail_h); ImageView p_detail_otc = (ImageView) this .findViewById(R.id.p_detail_otc); drug_title.setText(name);// ��ʾ���� drug_store.setText(store);// ��ʾ���� // �������ʾҩƷ���������Ϣ��ͼ�� if (drug_h != null & !drug_h.equals("")) { int h = SetImgResoruce.imgResource(drug_h.trim()); if (h != 0) { p_detail_h.setVisibility(View.VISIBLE); p_detail_h.setImageResource(h); } } if (drug_bao != null & !drug_bao.equals("")) { int bao = SetImgResoruce.imgResurce_bao(drug_bao.trim()); if (bao != 0) { p_detail_bao.setVisibility(View.VISIBLE); p_detail_bao.setImageResource(bao); } } if (drug_otc != null & !drug_otc.equals("")) { int otc = SetImgResoruce.imageResurce_otc(Integer.parseInt(drug_otc .trim())); if (otc != 0) { p_detail_otc.setVisibility(View.VISIBLE); p_detail_otc.setImageResource(otc); } } if (imgurl != null && !imgurl.equals("")) { // ����ͼƬ�ķ��� /*AaynImageLoaderUtil asynImageLoader = new AaynImageLoaderUtil(); asynImageLoader.showImageAsyn(drug_img, imgurl, R.drawable.loading);*/ Log.i("chenlinwei", url_path_s + "" + imgurl); // ����ͼƬ��ͼ��·�� ImageManager.from(this).displayImage(drug_img, url_path_s + imgurl,R.drawable.drug_photo_def_pic,150,150); // ��ʾ��ͼ drug_img.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String url= url_path_b + timgurl; Bundle bundle = new Bundle(); bundle.putString("imgpath", url); Log.i("chenlinwei", url + "::clss"); Intent intent = new Intent().setClass(DrugProductDetail.this, MyShowImgDialog.class); intent.putExtras(bundle); DrugProductDetail.this.startActivity(intent); } }); } else { drug_img.setImageResource(R.drawable.drug_photo_def_pic); } } /** * ���ظ��ఴť����¼� -moreonclick */ private final class moreonclick implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub loadMoreButton.setVisibility(View.GONE); proBar.setVisibility(View.VISIBLE); protxt.setVisibility(View.VISIBLE); new AsynLoader_more().execute(); } } private void InitData(List<Map<String, String>> storelist) { // ��õ�ǰ���� adapter = new detailListViewAdapter(this, storelist, drug_id); adapter.count = storelist.size(); if (storelist.size() < pagesize) { drugstorelist_listview.removeFooterView(loadMoreView); } drugstorelist_listview.setVisibility(View.VISIBLE); drugstorelist_listview.setAdapter(adapter); //loadMoreButton.setOnClickListener(new moreonclick()); drugstorelist_listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int posion, long arg3) { // TODO Auto-generated method stub //FootView Item ��� if (arg3 == -1) return; Map<String, String> map = (Map<String, String>) drugstorelist_listview .getItemAtPosition(posion); String storeid = map.get("drugstoreid"); Bundle innerbundle = new Bundle(); innerbundle.putString("loadmode", DrugStoreMap.LoadMode.PositionByDrug.toString()); innerbundle.putString("drugstoreid", storeid); innerbundle.putString("drugid", drug_id); Intent storeIntent = new Intent(DrugProductDetail.this, DrugStoreDetaill.class); storeIntent.putExtras(innerbundle); //startActivityForResult(storeIntent, requestCode) startActivity(storeIntent); } }); drugstorelist_listview.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub if (firstVisibleItem + visibleItemCount == totalItemCount) { if (!isloading)// ���û�м����� { loadMoreButton.setVisibility(View.GONE); proBar.setVisibility(View.VISIBLE); protxt.setVisibility(View.VISIBLE); new AsynLoader_more().execute(); } else { // drugstorelist_listview.removeFooterView(loadMoreView);// } } } }); } /** * �첽���ظ��Ķ�ķ��� */ private class AsynLoader_more extends AsyncTask<List<Map<String, String>>, Void, Integer> { List<Map<String, String>> innerdruglist; // 0 �������ݳɹ� ��1 ��������Ϊ�ջ�Ϊnull �� 2�����������Ӵ��� @Override protected Integer doInBackground(List<Map<String, String>>... params) { // TODO Auto-generated method stub try { if(innerLocationProvider != null){ if (station.latitude == 0.0 && station.longitude == 0.0) { innerLocationProvider.updateListener(); station = innerLocationProvider.getLocation(); } if (station.latitude == 0.0 && station.longitude == 0.0) { return 3; } } else { return 3; } innerdruglist = getData(); 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 onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); isloading = true; } @Override protected void onPostExecute(Integer result) { // TODO Auto-generated method stub // StrictModeWrapper.init(getApplicationContext()); if (result == 0) { for (Map<String, String> item : innerdruglist) { adapter.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; adapter.count += innerdruglist.size(); adapter.notifyDataSetChanged(); pageIndex++; return; } 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; return; } else if (result == 2) { loadMoreButton.setVisibility(View.VISIBLE); loadMoreButton.setBackgroundColor(getResources().getColor( R.color.transparent)); loadMoreButton.setText("�������Ӵ���"); proBar.setVisibility(View.GONE);// ����progressbar protxt.setVisibility(View.GONE); isloading = false; return; } else if (result == 3) { loadMoreButton.setVisibility(View.VISIBLE); loadMoreButton.setBackgroundColor(getResources().getColor( R.color.transparent)); loadMoreButton.setText("�ֻ���λʧ��"); proBar.setVisibility(View.GONE);// ����progressbar protxt.setVisibility(View.GONE); isloading = false; return; } } } /** * �첽����ҩƷ��Ϣ���� */ private class AsyLoad extends AsyncTask<List<Map<String, String>>, Void, Integer> { List<Map<String, String>> innerdruglist; @Override protected void onPreExecute() { // TODO Auto-generated method stub p_detail_relativelayouy.setVisibility(View.GONE); } @Override protected Integer doInBackground(List<Map<String, String>>... params) { // TODO Auto-generated method stub try { if (serisecode != null) { innerdruglist = Drug.getListByBarCode(serisecode, 0, 0); if (innerdruglist != null) { return (innerdruglist.size() > 0) ? 0 : 1; } else { return 2;// �������Ӵ��� } } 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) { p_detail_relativelayouy.setVisibility(View.VISIBLE); drug_name = innerdruglist.get(0).get("drugname"); drug_store = innerdruglist.get(0).get("enterprisename"); drug_imgurl = innerdruglist.get(0).get("drugimg"); drug_otc = innerdruglist.get(0).get("prescriptiontype"); drug_h = innerdruglist.get(0).get("approvaltype"); drug_bao = innerdruglist.get(0).get("ishcdrug"); drug_id = innerdruglist.get(0).get("drugid"); initdata(drug_name, drug_store, drug_imgurl); async_begin.setVisibility(View.GONE); async_error = (LinearLayout) findViewById(R.id.async_error); async_error.setVisibility(View.GONE); p_detaillocal_btn_P.setVisibility(View.GONE); // ���ص�ͼģʽ��ť p_detailinstruction_btn_P.setVisibility(View.VISIBLE); // ��ʾ˵���鰴ť new AsyLoadStore().execute(); } else if (result == 1) { p_detail_relativelayouy.setVisibility(View.GONE); async_begin.setVisibility(View.GONE); TextView async_error_txt = (TextView) async_error .findViewById(R.id.async_error_txt); async_error_txt.setText("û���ҵ�����ѯ��ҩƷ��Ϣ��"); Button async_error_reflesh = (Button) async_error .findViewById(R.id.async_error_reflesh); async_error_reflesh.setVisibility(View.GONE); async_error.setVisibility(View.VISIBLE); p_detaillocal_btn_P.setVisibility(View.GONE); // ���ص�ͼģʽ��ť p_detailinstruction_btn_P.setVisibility(View.GONE); // ����˵���鰴ť } else if (result == 2) { p_detail_relativelayouy.setVisibility(View.GONE); async_begin.setVisibility(View.GONE); async_error.setVisibility(View.VISIBLE); TextView async_error_txt = (TextView) async_error .findViewById(R.id.async_error_txt); async_error_txt.setText(R.string.error_nonetwork); Button async_error_reflesh = (Button) async_error .findViewById(R.id.async_error_reflesh); async_error_reflesh.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub async_error.setVisibility(View.GONE); async_begin.setVisibility(View.VISIBLE); new AsyLoad().execute(); } }); p_detaillocal_btn_P.setVisibility(View.GONE); // ���ص�ͼģʽ��ť p_detailinstruction_btn_P.setVisibility(View.GONE); // ����˵���鰴ť return; } } } /** * �첽���ظ���ҩ������ */ private class AsyLoadStore extends AsyncTask<Integer, Void, Integer> { List<Map<String, String>> innerdruglist; @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); pageIndex = 0;// ����ҳ����������ֹ�������ʱ�󵼴����� loadMoreButton.setText("����"); loadMoreView.setVisibility(View.VISIBLE); } @Override protected Integer doInBackground(Integer... params) { // TODO Auto-generated method stub try { if(innerLocationProvider != null){ station = innerLocationProvider.getLocation(); if (station.latitude == 0.0 && station.longitude == 0.0) { innerLocationProvider.updateListener(); station = innerLocationProvider.getLocation(); } if (station.latitude == 0.0 && station.longitude == 0.0) { return 3; } } else { return 3; } innerdruglist = getData(); if (innerdruglist != null) { return (innerdruglist.size() > 0) ? 0 : 1; } else { return 2;// �������Ӵ��� } } catch (Exception e) { // TODO Auto-generated catch block Log.i("chenlinwei", e.getMessage() + ""); return 2; } } @Override protected void onPostExecute(Integer result) { // TODO Auto-generated method stub if (result == 0) { InitData(innerdruglist); async_begin.setVisibility(View.GONE); pageIndex++; isloading = false; p_detaillocal_btn_P.setVisibility(View.VISIBLE); // ��ʾ��ͼģʽ��ť p_detailinstruction_btn_P.setVisibility(View.VISIBLE); // ��ʾ˵���鰴ť } else if (result == 1) { async_begin.setVisibility(View.GONE); TextView async_error_txt = (TextView) async_error .findViewById(R.id.async_error_txt); async_error_txt.setText("����û���ҵ����۴�ҩƷ��ҩ�ꡣ"); Button async_error_reflesh = (Button) async_error .findViewById(R.id.async_error_reflesh); async_error_reflesh.setVisibility(View.GONE); async_error.setVisibility(View.VISIBLE); p_detaillocal_btn_P.setVisibility(View.GONE); // ���ص�ͼģʽ��ť p_detailinstruction_btn_P.setVisibility(View.VISIBLE); // ��ʾ˵���鰴ť } else { async_begin.setVisibility(View.GONE); async_error.setVisibility(View.VISIBLE); TextView async_error_txt = (TextView) async_error .findViewById(R.id.async_error_txt); if (result == 3){ async_error_txt.setText(R.string.error_location); } else { async_error_txt.setText(R.string.error_nonetwork); } Button async_error_reflesh = (Button) async_error .findViewById(R.id.async_error_reflesh); async_error_reflesh.setVisibility(View.VISIBLE); async_error_reflesh.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub async_error.setVisibility(View.GONE); async_begin.setVisibility(View.VISIBLE); new AsyLoadStore().execute(); } }); isloading = false; p_detaillocal_btn_P.setVisibility(View.GONE); // ���ص�ͼģʽ��ť p_detailinstruction_btn_P.setVisibility(View.VISIBLE); // ��ʾ˵���鰴ť } } } /** * ����ɸѡ������ȡ��Ӧ��ҩ������ * @return */ private List<Map<String, String>> getData(){ List<Map<String, String>> innerlist = null; latitude = station.latitude; longitude = station.longitude; String cityName = station.city; if (searchRang == -1) { innerlist = Drug.whereToBuy(drug_id, cityName, latitude, longitude, ishc, pagesize, pageIndex + 1); } else { innerlist = Drug.whereToBuy(drug_id, searchRang, latitude, longitude, ishc, pagesize, pageIndex + 1); } return innerlist; } }