package com.wb.sc.mk.main; import java.util.ArrayList; import java.util.List; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.widget.PopupMenu.OnMenuItemClickListener; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.VolleyError; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.location.LocationClientOption.LocationMode; import com.common.net.volley.VolleyErrorHelper; import com.common.widget.ToastHelper; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnLastItemVisibleListener; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener; import com.handmark.pulltorefresh.library.PullToRefreshListView; import com.wb.sc.R; import com.wb.sc.activity.base.BaseActivity; import com.wb.sc.activity.base.ReloadListener; import com.wb.sc.adapter.DictionaryAdapter; import com.wb.sc.app.SCApp; import com.wb.sc.bean.Community; import com.wb.sc.bean.Dictionary; import com.wb.sc.bean.DictionaryItem; import com.wb.sc.bean.SentHome; import com.wb.sc.bean.Community.CommunityItem; import com.wb.sc.config.NetConfig; import com.wb.sc.config.RespCode; import com.wb.sc.task.CommunityRequest; import com.wb.sc.task.DictionaryRequest; import com.wb.sc.util.Constans; import com.wb.sc.util.MetaUtil; import com.wb.sc.util.ParamsUtil; public class SetLocationDetailActivity extends BaseActivity implements OnMenuItemClickListener, Listener<Dictionary>, ErrorListener, ReloadListener{ private PullToRefreshListView mPullToRefreshListView; private DictionaryAdapter mAdpter; private String mKeyword; private String sId; private int pageNo; private int pageSize = 10; private boolean hasNextPage; private String mDistrictName; private DictionaryRequest mDictionaryRequest; private CommunityRequest mCommunityRequest; private List<Object> list = new ArrayList<Object>(); private Spinner mSpinner; private Spinner mDistanceSpinner; public String longitude; // 经度 public String latitude; // 维度 public String merchantCategoryId; // 商户类别 private String merchantName; private LocationClient mLocationClient; private LocationMode tempMode = LocationMode.Hight_Accuracy; private String tempcoor="gcj02"; private DictionaryItem item; private int pos; @Override protected void onCreate(Bundle savedInstanceState) { // requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.activity_set_location_detial); getIntentData(); initView(); showLoading(); if (item.dictionaryId.equals("3")) { requestCommunity(getCommunityRequestParams()); } else { requestBase(getBaseRequestParams(), this, this); } } @Override protected void onStop() { super.onStop(); } private void InitLocation(){ LocationClientOption option = new LocationClientOption(); option.setLocationMode(tempMode);//设置定位模式 option.setCoorType(tempcoor);//返回的定位结果是百度经纬度,默认值gcj02 int span=1000; option.setScanSpan(span);//设置发起定位请求的间隔时间为5000ms option.setIsNeedAddress(true); mLocationClient.setLocOption(option); } @Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } public void back (View view) { finish(); } public void initView() { TextView title_tv = (TextView) findViewById(R.id.title_tv); if (item.dictionaryId.equals("0")) { title_tv.setText("选择省"); } else if(item.dictionaryId.equals("1")) { title_tv.setText("选择市"); } else if(item.dictionaryId.equals("2")) { title_tv.setText("选择区"); } else if(item.dictionaryId.equals("3")) { title_tv.setText("选择社区"); } mPullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_scroll); mPullToRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() { @Override public void onRefresh(PullToRefreshBase<ListView> refreshView) { // new GetDataTask().execute(); pageNo = 1; list.clear(); requestBase(getBaseRequestParams(), SetLocationDetailActivity.this, SetLocationDetailActivity.this); } }); mPullToRefreshListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() { @Override public void onLastItemVisible() { requestBase(getBaseRequestParams(), SetLocationDetailActivity.this, SetLocationDetailActivity.this); } }); mPullToRefreshListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // Intent intent = new Intent(SetLocationDetailActivity.this, SentHomeDetailActivity.class); // intent.putExtra("merchantTel", list.get(position).merchantTel); // intent.putExtra("merchantName", list.get(position).merchantName); String name = ""; String code = ""; String sid = ""; String supId = ""; if (list.get(position -1) instanceof DictionaryItem) { DictionaryItem item = (DictionaryItem) list.get(position -1); code = item.dictionaryCode; name = item.dictionaryName; sid = item.dictionaryId; supId = item.superDictionaryId; } else { CommunityItem item = (CommunityItem) list.get(position -1); code = item.communityCode; name = item.communityName; sid = item.communityId; } item.dictionaryName = name; item.dictionaryCode = code; item.id = sid; item.superDictionaryId = supId; if (item.dictionaryId.equals("0")) { DictionaryItem subItem = SCApp.getInstance().getList().get(1); subItem.superId = SCApp.getInstance().getList().get(0).superDictionaryId; } else if(item.dictionaryId.equals("1")) { DictionaryItem subItem = SCApp.getInstance().getList().get(2); subItem.superId = SCApp.getInstance().getList().get(1).superDictionaryId; } else if(item.dictionaryId.equals("2")) { DictionaryItem subItem = SCApp.getInstance().getList().get(3); subItem.superId = SCApp.getInstance().getList().get(2).superDictionaryId; } else if(item.dictionaryId.equals("3")) { } SetLocationDetailActivity.this.finish(); } }); initData(); mAdpter = new DictionaryAdapter(SetLocationDetailActivity.this, list); mAdpter.setShowArrow(false); mPullToRefreshListView.setDividerDrawable(null); mPullToRefreshListView.setAdapter(mAdpter); // // 初始化控件 // mSpinner = (Spinner) findViewById(R.id.spinner1); // // 建立数据源 // String[] mItems = getResources().getStringArray(R.array.spinnername); // // 建立Adapter并且绑定数据源 // ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, // R.layout.spinner_text_layout, mItems); // adapter.setDropDownViewResource(R.layout.spinner_down_text_layout); // mSpinner.setAdapter(adapter); // // // 初始化控件 // mDistanceSpinner = (Spinner) findViewById(R.id.spinner2); // // 建立数据源 // String[] distances = getResources().getStringArray(R.array.spinner_distance); // // 建立Adapter并且绑定数据源 // ArrayAdapter<String> distanceAdapter = new ArrayAdapter<String>(this, // R.layout.spinner_text_layout, distances); // distanceAdapter.setDropDownViewResource(R.layout.spinner_down_text_layout); // mDistanceSpinner.setAdapter(distanceAdapter); } private class GetDataTask extends AsyncTask<Void, Void, String[]> { @Override protected String[] doInBackground(Void... params) { // Simulates a background job. try { Thread.sleep(4000); } catch (InterruptedException e) { } return null; } @Override protected void onPostExecute(String[] result) { mAdpter.notifyDataSetChanged(); // Call onRefreshComplete when the list has been refreshed. mPullToRefreshListView.onRefreshComplete(); super.onPostExecute(result); } } private void initData() { String [] name = {"缇斯西饼(洪山桥)", "安德鲁森(洪山桥太阳城店)", "陌上花开(仓山店)", "比哥鸡排", "那时花开"}; String [] category = {"餐饮", "餐饮", "花店", "餐饮", "花店"}; String [] distance = {"100米", "100米", "100米", "100米", "100米"}; int [] resId = {R.drawable.xibing, R.drawable.mianbao, R.drawable.huadian, R.drawable.jipai, R.drawable.nashihuadian}; for (int i = 0; i < resId.length; i++) { SentHome sentHome = new SentHome(); sentHome.name = name [i]; sentHome.category = category [i]; sentHome.resId = resId [i]; sentHome.distance = distance[i]; // list.add(sentHome); } } public void getIntentData() { Intent intent = getIntent(); mKeyword = intent.getStringExtra("keyword"); pageNo = 1; pos = intent.getIntExtra("position", 0); item = SCApp.getInstance().getList().get(pos); // item = (DictionaryItem)intent.getSerializableExtra("obj"); } @Override public boolean onMenuItemClick(MenuItem arg0) { // TODO Auto-generated method stub return false; } /** * 执行任务请求 * @param method * @param url * @param params * @param listenre * @param errorListener */ private void requestCommunity(List<String> paramsList) { if(mCommunityRequest != null) { mCommunityRequest.cancel(); } String url = NetConfig.getServerBaseUrl() + NetConfig.EXTEND_URL; mCommunityRequest = new CommunityRequest(url, paramsList, new Listener<Community> () { @Override public void onResponse(Community response) { if(response.respCode.equals(RespCode.SUCCESS)) { if(response.totalNum == 0) { showEmpty(); return; } pageNo ++; list.addAll(response.datas); // Call onRefreshComplete when the list has been refreshed. mPullToRefreshListView.onRefreshComplete(); if (!response.hasNextPage) { mPullToRefreshListView.setMode(Mode.DISABLED); } mAdpter.notifyDataSetChanged(); showContent(); } else { showLoadError(SetLocationDetailActivity.this); ToastHelper.showToastInBottom(SetLocationDetailActivity.this, response.respCodeMsg); } } }, this); startRequest(mCommunityRequest); } /** * 执行任务请求 * @param method * @param url * @param params * @param listenre * @param errorListener */ private void requestBase(List<String> paramsList, Listener<Dictionary> listenre, ErrorListener errorListener) { if(mDictionaryRequest != null) { mDictionaryRequest.cancel(); } String url = NetConfig.getServerBaseUrl() + NetConfig.EXTEND_URL; mDictionaryRequest = new DictionaryRequest(url, paramsList, this, this); startRequest(mDictionaryRequest); } /** * 获取请求参数,请按照接口文档列表顺序排列 * @return */ private List<String> getBaseRequestParams() { List<String> params = new ArrayList<String>(); params.add(ParamsUtil.getReqParam("FG21", 4)); params.add(ParamsUtil.getReqParam("MC_CENTERM", 16)); params.add(ParamsUtil.getReqParam(MetaUtil.readMeta(this, Constans.APP_CHANNEL), 20)); String type = ""; String id = ""; String code = ""; if (item.dictionaryId.equals("0")) { type = "province"; } else if(item.dictionaryId.equals("1")) { type = "city"; id = item.superId; } else if(item.dictionaryId.equals("2")) { type = "country"; id = item.superId; } else if (item.dictionaryId.equals("3")) { id = item.superId; } params.add(ParamsUtil.getReqParam(type, 64)); params.add(ParamsUtil.getReqParam(id, 64)); params.add(ParamsUtil.getReqParam(code, 64)); params.add(ParamsUtil.getReqIntParam(pageNo, 3)); params.add(ParamsUtil.getReqIntParam(pageSize, 2)); return params; } private List<String> getCommunityRequestParams() { List<String> params = new ArrayList<String>(); params.add(ParamsUtil.getReqParam("FG18", 4)); params.add(ParamsUtil.getReqParam("MC_CENTERM", 16)); params.add(ParamsUtil.getReqParam(MetaUtil.readMeta(this, Constans.APP_CHANNEL), 20)); List<DictionaryItem> list = SCApp.getInstance().getList(); String provinceCode = list.get(0).getDictionaryCode() == null ? "" : list.get(0).getDictionaryCode(); String cityCode = list.get(1).getDictionaryCode() == null ? "" : list.get(1).getDictionaryCode(); String communityCode = list.get(2).getDictionaryCode() == null ? "" : list.get(2).getDictionaryCode(); params.add(ParamsUtil.getReqParam(provinceCode, 4)); params.add(ParamsUtil.getReqParam(cityCode, 6)); params.add(ParamsUtil.getReqParam(communityCode, 4)); mKeyword = mKeyword == null ? "" : mKeyword; params.add(ParamsUtil.getReqParam(mKeyword, 128)); params.add(ParamsUtil.getReqIntParam(pageNo, 3)); params.add(ParamsUtil.getReqIntParam(pageSize, 2)); return params; } @Override public void onReload() { requestBase(getBaseRequestParams(), this, this); } @Override public void onErrorResponse(VolleyError error) { showLoadError(this); ToastHelper.showToastInBottom(getApplicationContext(), VolleyErrorHelper.getErrorMessage(this, error)); } @Override public void onResponse(Dictionary response) { if(response.respCode.equals(RespCode.SUCCESS)) { pageNo ++; if(response.totalNum == 0) { showEmpty(); return; } list.addAll(response.datas); // Call onRefreshComplete when the list has been refreshed. mPullToRefreshListView.onRefreshComplete(); if (!response.hasNextPage) { mPullToRefreshListView.setMode(Mode.DISABLED); } mAdpter.notifyDataSetChanged(); showContent(); } else { showLoadError(this); ToastHelper.showToastInBottom(this, response.respCodeMsg); } } }