/**
*
*/
package coolbuy360.searchhealth;
import java.util.ArrayList;
import com.baidu.mapapi.search.MKAddrInfo;
import com.baidu.mapapi.search.MKBusLineResult;
import com.baidu.mapapi.search.MKDrivingRouteResult;
import com.baidu.mapapi.search.MKPoiInfo;
import com.baidu.mapapi.search.MKPoiResult;
import com.baidu.mapapi.search.MKSearch;
import com.baidu.mapapi.search.MKSearchListener;
import com.baidu.mapapi.search.MKShareUrlResult;
import com.baidu.mapapi.search.MKSuggestionResult;
import com.baidu.mapapi.search.MKTransitRouteResult;
import com.baidu.mapapi.search.MKWalkingRouteResult;
import com.baidu.mapapi.utils.CoordinateConvert;
import com.baidu.platform.comapi.basestruct.GeoPoint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.format.DateUtils;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import coolbuy360.adapter.BStoreListViewAdapter;
import coolbuy360.logic.ConstantsSetting;
import coolbuy360.pulltorefresh.PullToRefreshBase;
import coolbuy360.pulltorefresh.PullToRefreshListView;
import coolbuy360.pulltorefresh.PullToRefreshBase.Mode;
import coolbuy360.pulltorefresh.PullToRefreshBase.OnRefreshListener2;
import coolbuy360.service.DisplayUtil;
import coolbuy360.service.LocationInfo;
import coolbuy360.service.LocationProvider;
import coolbuy360.service.Util;
import coolbuy360.service.searchApp;
/**
* @author yangxc
*
*/
public class BDrugStore extends Activity {
private PullToRefreshListView refreshListView;
private LocationProvider innerLocationProvider = null;
LocationInfo.SItude station = null;
private MKSearch mSearch = null; // ����ģ�飬Ҳ��ȥ����ͼģ�����ʹ��
private String searchkey = "ҩ��";
private int searchrange = 50000;
/*protected double latitude = 30.280506;
protected double longitude = 120.107582;*/
protected double latitude = 0.0;
protected double longitude = 0.0;
GeoPoint localpt;
private BStoreListViewAdapter adapter;
private int pageindex = 0;
private int pagesize = ConstantsSetting.QLDefaultPageSize;
Boolean isRefresh = true;
/*private int searchRang;
private int ishc;*/
LinearLayout async_error;
View listview_empty_error;
View LoadingView;
Boolean isCompleted = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
innerLocationProvider = searchApp.mLocationProvider;
// Ϊ�˳�����
searchApp.getInstance().addActivity(this);
setContentView(R.layout.drugstore);
async_error = (LinearLayout) findViewById(R.id.async_error);
LayoutInflater layoutInflater = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
listview_empty_error= layoutInflater.inflate(R.layout.listview_emptyview_error, null);
adapter = new BStoreListViewAdapter(this, new ArrayList<MKPoiInfo>());
refreshListView = (PullToRefreshListView) findViewById(R.id.drugstorelist_ptflistview);
LoadingView = layoutInflater.inflate(R.layout.listview_emptyview_loading, null);
refreshListView.setEmptyView(LoadingView);
initPullToRefreshListView(refreshListView);
ImageButton imgbtndialog = (ImageButton) this
.findViewById(R.id.s_dialogTitle);
imgbtndialog.setVisibility(View.GONE);
/*imgbtndialog.setOnClickListener(new dialogOnclicck());*/
ImageButton actionbar_tomap_btn = (ImageButton) this
.findViewById(R.id.actionbar_tomap_btn);
actionbar_tomap_btn.setOnClickListener(new changOnclick());
// ==========================��ȡ�����ļ��е���Ϣ=====================/
/*AppConfig config = new AppConfig(getBaseContext());
searchRang = config.getStore_SearchRange(getBaseContext());
ishc = config.getStore_IsHC(getBaseContext());*/
// ��ʼ������ģ�飬ע�������¼�����
mSearch = new MKSearch();
mSearch.init(searchApp.getInstance().mBMapManager, new DrugStoreSearchListener());
mSearch.setPoiPageCapacity(pagesize);
// ===========================�״μ��ص�����===========================/
refreshData();// ��һ�μ�������
}
private class DrugStoreSearchListener implements MKSearchListener {
//�ڴ˴�������ҳ���
@Override
public void onGetPoiDetailSearchResult(int type, int error) {
}
/**
* �ڴ˴���poi�������
*/
public void onGetPoiResult(MKPoiResult res, int type, int error) {
// ����ſɲο�MKEvent�еĶ���
if (error != 0 || res == null || res.getCurrentNumPois() == 0) {
if (isRefresh) {
ListViewEmptyError("û���ҵ�������ҩ����Ϣ", new refreshOnclick());
} else {
Toast.makeText(BDrugStore.this, "û�и�������", Toast.LENGTH_SHORT).show();
}
} else if (res.getCurrentNumPois() > 0) {
if (isRefresh) {
adapter.clear();
adapter.addItems(res.getAllPoi());
adapter.notifyDataSetChanged();
refreshListView.getRefreshableView().requestFocusFromTouch();
refreshListView.getRefreshableView().setSelection(0);
async_error.setVisibility(View.GONE);
LoadingView.setVisibility(View.GONE);
pageindex = 0;
pageindex++;
} else {
adapter.addItems(res.getAllPoi());
adapter.notifyDataSetChanged();
pageindex++;
async_error.setVisibility(View.GONE);
}
} else if (res.getCityListNum() > 0) {
// ������ؼ����ڱ���û���ҵ����������������ҵ�ʱ�����ذ����ùؼ�����Ϣ�ij����б�
/*String strInfo = "��";
for (int i = 0; i < res.getCityListNum(); i++) {
strInfo += res.getCityListInfo(i).city;
strInfo += ",";
}
strInfo += "�ҵ����";
Toast.makeText(PoiSearchDemo.this, strInfo, Toast.LENGTH_LONG)
.show();*/
}
refreshListView.onRefreshComplete();
}
public void onGetDrivingRouteResult(MKDrivingRouteResult res, int error) {
}
public void onGetTransitRouteResult(MKTransitRouteResult res, int error) {
}
public void onGetWalkingRouteResult(MKWalkingRouteResult res, int error) {
}
public void onGetAddrResult(MKAddrInfo res, int error) {
}
public void onGetBusDetailResult(MKBusLineResult result, int iError) {
}
@Override
public void onGetShareUrlResult(MKShareUrlResult result, int type,
int error) {
}
@Override
public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
}
}
/**
* ��ʼ��PullToRefreshListView<br>
*
* @param rtflv
* @param adapter
*/
public void initPullToRefreshListView(PullToRefreshListView rtflv) {
rtflv.setMode(Mode.BOTH);
rtflv.setOnRefreshListener(new MyOnRefreshListener(rtflv));
rtflv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View View,
int position, long arg3) {
//FootView Item ���
if (arg3 == -1)
return;
MKPoiInfo itemmap = (MKPoiInfo) parent.getAdapter()
.getItem(position);
Intent mapintent = new Intent().setClass(BDrugStore.this,
BDrugStoreMap.class);
mapintent.putExtra("storename", itemmap.name);
mapintent.putExtra("address", itemmap.address);
mapintent.putExtra("phone", itemmap.phoneNum);
mapintent.putExtra("poilatitudee6", itemmap.pt.getLatitudeE6());
mapintent.putExtra("poilongitudee6", itemmap.pt.getLongitudeE6());
startActivity(mapintent);
}
});
if (adapter != null) {
rtflv.setAdapter(adapter);
}
rtflv.getRefreshableView().setSelector(R.color.transparent);
rtflv.getRefreshableView().setDivider(null);
rtflv.getRefreshableView().setBackgroundColor(
getResources().getColor(R.color.drugstore_bg_gray));
int pixof5dp = DisplayUtil.dip2px(this, 5);
rtflv.getRefreshableView().setPadding(0, pixof5dp, 0, pixof5dp);
}
class MyOnRefreshListener implements OnRefreshListener2<ListView> {
public MyOnRefreshListener(PullToRefreshListView ptflv) {
}
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
// ����ˢ��
refreshView.getLoadingLayoutProxy().setReleaseLabel("�ſ�ˢ������");
String label = DateUtils.formatDateTime(BDrugStore.this,
System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME
| DateUtils.FORMAT_SHOW_DATE
| DateUtils.FORMAT_ABBREV_ALL);
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
refreshData();
// ˢ�����ݺ�״̬��ԭ
isCompleted = false;
refreshView.getLoadingLayoutProxy().setPullLabel("����ˢ��");
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
// ��������
// ������������
loadMoreData();
}
}
/**
* �ı������ļ� -dialogOnclick
*/
/*private final class dialogOnclicck implements OnClickListener {
@Override
public void onClick(View v) {
CustomeDialog customeDialog = new CustomeDialog(BDrugStore.this,
R.style.dialog);
Window window = customeDialog.getWindow();
LayoutParams params = new LayoutParams();
params.y = getResources().getDimensionPixelOffset(
R.dimen.actionbar_height);
params.height = LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.TOP;
window.setAttributes(params);
customeDialog.setCanceledOnTouchOutside(true);
customeDialog.show();
customeDialog.setonOklistrner("ȷ��", new OnClickListener() {
@Override
public void onClick(View v) {
Map<String, String> configmap = (Map<String, String>) v
.getTag();
searchRang = Integer.parseInt(configmap
.get(AppConfig.Store_SearchRange));
ishc = Integer.parseInt(configmap.get(AppConfig.Store_IsHC));
async_error.setVisibility(View.GONE);
async_begin.setVisibility(View.VISIBLE);
new AsyncLoader_Refresh().execute();// �����첽��������
}
});
}
}*/
/**
* ����ɸѡ������ȡ��Ӧ��ҩ������
* @return
*/
/*private List<MKPoiInfo> getData(int pageindex){
List<MKPoiInfo> innerlist = null;
latitude = station.latitude;
longitude = station.longitude;
String cityName = station.city;
if (searchRang == -1) {
innerlist = coolbuy360.logic.BDrugStore.getList(cityName, latitude,
longitude, ishc, pagesize, pageindex + 1);
} else {
innerlist = coolbuy360.logic.BDrugStore.getList((double) searchRang,
latitude, longitude, ishc, pagesize, pageindex + 1);
}
return innerlist;
}*/
/**
* ��ת��ͼģʽ -changOnclick()
*/
private final class changOnclick implements OnClickListener {
@Override
public void onClick(View v) {
Intent mapIntent = new Intent(BDrugStore.this, BDrugStoreMap.class);
startActivity(mapIntent);
}
}
/**
* ˢ������
*/
private void refreshData() {
try {
if (Util.isNetworkConnected(this)) {
if (innerLocationProvider != null) {
station = innerLocationProvider.getLocation();
if (station == null || (station.latitude == 0.0 && station.longitude == 0.0)) {
innerLocationProvider.updateListener();
station = innerLocationProvider.getLocation();
}
if (station == null || (station.latitude == 0.0 && station.longitude == 0.0)) {
setLocaltionError();
refreshListView.onRefreshComplete();
}
} else {
setLocaltionError();
refreshListView.onRefreshComplete();
}
isRefresh = true;
localpt = new GeoPoint((int) (station.latitude * 1E6),
(int) (station.longitude * 1E6));
localpt = CoordinateConvert.fromGcjToBaidu(localpt);
adapter.setLocalGeoPoint(localpt);
mSearch.poiSearchNearBy(searchkey, localpt, searchrange);
} else {
setNetError();
refreshListView.onRefreshComplete();
}
} catch (Exception e) {
setNetError();
refreshListView.onRefreshComplete();
}
}
/**
* ���ظ�������
*/
private void loadMoreData() {
try {
if (Util.isNetworkConnected(this)) {
if (pageindex > 0) {
isRefresh = false;
mSearch.goToPoiPage(pageindex);
} else {
refreshListView.onRefreshComplete();
}
} else {
Toast.makeText(BDrugStore.this, "�������Ӵ���", Toast.LENGTH_SHORT)
.show();
refreshListView.onRefreshComplete();
}
} catch (Exception e) {
Toast.makeText(BDrugStore.this, "�������Ӵ���", Toast.LENGTH_SHORT)
.show();
refreshListView.onRefreshComplete();
}
}
/**
* ���ö�λ������ʾ
*/
private void setLocaltionError() {
TextView async_error_txt = (TextView) async_error
.findViewById(R.id.async_error_txt);
Button async_error_refleshbtn = (Button) async_error
.findViewById(R.id.async_error_reflesh);
async_error.setVisibility(View.VISIBLE);
async_error_txt.setText(R.string.error_location);
async_error_refleshbtn.setVisibility(View.VISIBLE);
async_error_refleshbtn.setOnClickListener(new refreshOnclick());
ListViewEmptyError(R.string.error_location,new refreshOnclick());
}
/**
* �������������ʾ
*/
private void setNetError() {
TextView async_error_txt = (TextView) async_error
.findViewById(R.id.async_error_txt);
Button async_error_refleshbtn = (Button) async_error
.findViewById(R.id.async_error_reflesh);
async_error.setVisibility(View.VISIBLE);
async_error_txt.setText(R.string.error_nonetwork);
async_error_refleshbtn.setVisibility(View.VISIBLE);
async_error_refleshbtn.setOnClickListener(new refreshOnclick());
ListViewEmptyError(R.string.error_nonetwork,new refreshOnclick());
}
/**
* �����б�Ϊ�մ�����ʾ
* @param message
* @param onclick
*/
public void ListViewEmptyError(int message, OnClickListener onclick) {
LoadingView.setVisibility(View.GONE);
refreshListView.setEmptyView(listview_empty_error);
TextView txtMessageView = (TextView) listview_empty_error
.findViewById(R.id.listview_empty_message);
txtMessageView.setText(message);
Button btnRefreshViewButton = (Button) listview_empty_error
.findViewById(R.id.listview_empty_refresh);
btnRefreshViewButton.setOnClickListener(onclick);
}
/**
* �����б�Ϊ�մ�����ʾ
* @param message
* @param onclick
*/
public void ListViewEmptyError(String message, OnClickListener onclick) {
LoadingView.setVisibility(View.GONE);
refreshListView.setEmptyView(listview_empty_error);
TextView txtMessageView = (TextView) listview_empty_error
.findViewById(R.id.listview_empty_message);
txtMessageView.setText(message);
Button btnRefreshViewButton = (Button) listview_empty_error
.findViewById(R.id.listview_empty_refresh);
btnRefreshViewButton.setOnClickListener(onclick);
}
/**
* ˢ�µ��
*/
public class refreshOnclick implements OnClickListener
{
@Override
public void onClick(View v) {
async_error.setVisibility(View.GONE);
listview_empty_error.setVisibility(View.GONE);
LoadingView.setVisibility(View.VISIBLE);
//async_begin.setVisibility(View.VISIBLE);
refreshData();
}
}
/**
* ģ��Home������ϵͳ��������Ӧ�ý���
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// ע��
intent.addCategory(Intent.CATEGORY_HOME);
this.startActivity(intent);
return true;
}
return super.onKeyDown(keyCode, event);
}
}