/** * */ package com.keju.maomao.activity.bar; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.keju.maomao.AsyncImageLoader; import com.keju.maomao.AsyncImageLoader.ImageCallback; import com.keju.maomao.CommonApplication; import com.keju.maomao.Constants; import com.keju.maomao.R; import com.keju.maomao.SystemException; import com.keju.maomao.activity.base.BaseActivity; import com.keju.maomao.activity.event.EventDetailActivity; import com.keju.maomao.activity.friendpersonalcenter.FriendPersonalCenter; import com.keju.maomao.activity.mapview.LocationMapActivity; import com.keju.maomao.activity.personalcenter.PersonalCenter; import com.keju.maomao.bean.BarBean; import com.keju.maomao.helper.BusinessHelper; import com.keju.maomao.util.NetUtil; import com.keju.maomao.util.SharedPrefUtil; import com.keju.maomao.util.StringUtil; import com.umeng.analytics.MobclickAgent; /** * 酒吧详情 * * @author zhouyong * @data 创建时间:2013-10-22 下午4:05:12 */ public class BarDetailActivity extends BaseActivity implements OnClickListener { private ImageButton ibLeft; private Button btnRight; private TextView tvTitle; private TextView tvName, tvDistanceLabel, tvAddress, tvTelNumber, tvBarType, tvIntro; private TextView tvShowNum;// 签到人数 private ImageView ivImage; private ImageView ivNext;// 签到 private LinearLayout viewShowList; private LinearLayout viewAddress;// 酒啊地址 private ProgressDialog pd; private CommonApplication app; private boolean isCollectingTask = false;// 是否收藏 private BarBean bean; private List<BarBean> barDetailList = new ArrayList<BarBean>();// 酒吧详情 private List<BarBean> showList = new ArrayList<BarBean>();// 签到 private String address;//酒吧地址 上海市&嘉定 // 活动 private LinearLayout viewEvent; private ImageView ivEvent; private TextView tvEventTitle, tvEventEndTime; private LinearLayout viewEventShow;// 如果酒吧没有活动就不显示 private int eventId; private Boolean iscollect;//活动是否被收藏 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.bar_details); MobclickAgent.onError(this); bean = (BarBean) getIntent().getExtras().getSerializable(Constants.EXTRA_DATA); MobclickAgent.onEvent(this, "bar_details"); app = (CommonApplication) getApplication(); app.addActivity(this); findView(); fillData(); } private void findView() { ibLeft = (ImageButton) this.findViewById(R.id.ibLeft); btnRight = (Button) this.findViewById(R.id.btnRight); tvTitle = (TextView) this.findViewById(R.id.tvTitle); tvName = (TextView) this.findViewById(R.id.tvName); tvDistanceLabel = (TextView) this.findViewById(R.id.tvDistanceLabel); tvAddress = (TextView) this.findViewById(R.id.tvAddress); tvTelNumber = (TextView) this.findViewById(R.id.tvTelNumber); tvBarType = (TextView) this.findViewById(R.id.tvBarType); tvIntro = (TextView) this.findViewById(R.id.tvIntro); // tvHot = (TextView) this.findViewById(R.id.tvHot); tvShowNum = (TextView) this.findViewById(R.id.tvShowCount); ivImage = (ImageView) this.findViewById(R.id.ivImage); viewShowList = (LinearLayout) this.findViewById(R.id.viewShowList);// 签到 viewAddress = (LinearLayout) this.findViewById(R.id.viewAddress); ivNext = (ImageView) this.findViewById(R.id.ivNext); // 活动 viewEvent = (LinearLayout) this.findViewById(R.id.viewEvent); ivEvent = (ImageView) this.findViewById(R.id.ivEvent); tvEventTitle = (TextView) this.findViewById(R.id.tvEventTitle); tvEventEndTime = (TextView) this.findViewById(R.id.tvEventEndTime); viewEventShow = (LinearLayout) this.findViewById(R.id.viewEventShow); } private void fillData() { ibLeft.setImageResource(R.drawable.ic_btn_left); ibLeft.setOnClickListener(this); btnRight.setBackgroundResource(R.drawable.bg_btn_collection); btnRight.setText("收藏"); btnRight.setOnClickListener(this); ivImage.setOnClickListener(this); ivNext.setOnClickListener(this); tvTelNumber.setOnClickListener(this); viewAddress.setOnClickListener(this); viewEvent.setOnClickListener(this); tvTitle.setText("酒吧详情"); tvName.setText(bean.getBar_Name());// 酒吧名字 tvBarType.setText(bean.getBarType());// 酒吧类型 tvIntro.setText( bean.getBar_Intro());// 酒吧内容 tvTelNumber.setText(bean.getTelephone());// 酒吧号码 // tvHot.setText(bean.getHot());// 酒吧人气 if (NetUtil.checkNet(BarDetailActivity.this)) { new GetBarDetailTask().execute(); } else { showShortToast(R.string.NoSignalException); } // 距离 double latitude; try { latitude = Double.parseDouble(bean.getLatitude()); } catch (NumberFormatException e) { latitude = 0; } double longitude; try { longitude = Double.parseDouble(bean.getLongitude()); } catch (NumberFormatException e) { longitude = 0; } try { if (app.getLastLocation() != null) { double distance = StringUtil.getDistance(app.getLastLocation().getLatitude(), app.getLastLocation() .getLongitude(), latitude, longitude); if (distance > 1000) { distance = distance / 1000; tvDistanceLabel.setText(String.format("%.1f", distance) + "km"); } else { tvDistanceLabel.setText(String.format("%.0f", distance) + "m"); } } else { tvDistanceLabel.setText(""); } } catch (Exception e) { } String imageUrl = bean.getShowPhotoUrl(); ivImage.setTag(imageUrl); Drawable cacheDrawable = AsyncImageLoader.getInstance().loadDrawable(imageUrl, new ImageCallback() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { ImageView image = (ImageView) ivImage.findViewWithTag(imageUrl); if (image != null) { if (imageDrawable != null) { ivImage.setImageDrawable(imageDrawable); } else { ivImage.setImageResource(R.drawable.ic_default); } } } }); if (cacheDrawable != null) { ivImage.setImageDrawable(cacheDrawable); } else { ivImage.setImageResource(R.drawable.ic_default); } ivImage.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Bundle b = new Bundle(); b.putSerializable(Constants.EXTRA_DATA, bean); openActivity(ShowBarEnvironmentActivity.class, b); } }); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.ibLeft: finish(); break; case R.id.btnRight: if (isCollectingTask == false) { showShortToast("正在执行收藏操作,请稍等..."); // return; } if (NetUtil.checkNet(this)) { isCollectingTask = true; new CollectTask().execute(); refreshData(); } else { showShortToast(R.string.NoSignalException); } break; case R.id.ivNext: break; case R.id.viewAddress: try { String address1 = null; String address = bean.getBar_Address(); StringTokenizer token = new StringTokenizer(address, "$"); String[] add = new String[3]; int i1 = 0; while (token.hasMoreTokens()) { add[i1] = token.nextToken(); i1++; address1 = add[0]; } //下面的代码是用户自己选择地图 Uri uri = Uri.parse("geo:" + bean.getLatitude() + "," + bean.getLongitude() + "," + address1+ bean.getBarStreet()); Intent mIntent = new Intent(Intent.ACTION_VIEW,uri); startActivity(mIntent); //下面的代码是只能进入百度地图 // Intent intent = Intent.getIntent("intent://map/marker?location=" + bean.getLatitude() + "," // + bean.getLongitude() + "&title=" + bean.getBar_Name() + "&content=" + address1 // + bean.getBarStreet() + "&src=冒冒#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end"); // startActivity(intent); } catch (Exception e) { if (TextUtils.isEmpty(bean.getLatitude()) || TextUtils.isEmpty(bean.getLongitude())) { showShortToast("酒吧经纬度数据为空"); return; } // 跳转到自定义的sdk地图里 Intent intent = new Intent(this, LocationMapActivity.class); intent.putExtra(Constants.EXTRA_DATA, bean); intent.putExtra("address", address); startActivity(intent); } break; case R.id.tvTelNumber: String phoneNum = bean.getTelephone(); if (TextUtils.isEmpty(phoneNum)) { return; } Intent callIntent = new Intent(); callIntent.setAction(Intent.ACTION_DIAL); callIntent.setData(Uri.parse("tel:" + phoneNum)); startActivity(callIntent); break; case R.id.viewEvent: Bundle b = new Bundle(); b.putInt(Constants.EXTRA_DATA,eventId); b.putString("BARNAME", bean.getBar_Name()); b.putBoolean("ISCOLLECT", iscollect); openActivity(EventDetailActivity.class, b); break; default: break; } } /** * 刷新数据 */ private void refreshData() { if (NetUtil.checkNet(BarDetailActivity.this)) { // pageIndex = 1; new GetBarDetailTask().execute(); } else { showShortToast(R.string.NoSignalException); } } /** * * 获取酒吧详情 * * */ public class GetBarDetailTask extends AsyncTask<Void, Void, JSONObject> { @Override protected void onPreExecute() { super.onPreExecute(); if (pd == null) { pd = new ProgressDialog(BarDetailActivity.this); } pd.setMessage(getString(R.string.loading)); pd.show(); } @Override protected JSONObject doInBackground(Void... params) { Integer uid = SharedPrefUtil.getUid(BarDetailActivity.this); try { return new BusinessHelper().getBarDetail(bean.getBar_id(), uid); } catch (SystemException e) { } return null; } @Override protected void onPostExecute(JSONObject result) { super.onPostExecute(result); if (pd != null) { pd.dismiss(); } if (result != null) { if (result.has("status")) { try { int status = result.getInt("status"); if (status == Constants.REQUEST_SUCCESS) { // btnRight.setText(result.getString("is_collect")); address = result.getString("county"); String showCount = result.getString("show_count"); tvShowNum.setText( showCount +"人"); StringTokenizer token = new StringTokenizer(address, "$"); String[] add = new String[3]; int i = 0; while (token.hasMoreTokens()) { add[i] = token.nextToken(); i++; String address1 = add[0]; tvAddress.setText(address1 + bean.getBarStreet());// 酒吧地址 } if (result.has("picture_list")) { JSONArray showArrList = result.getJSONArray("picture_list"); if (showArrList != null) { ArrayList<BarBean> showBeans = (ArrayList<BarBean>) BarBean .constractList(showArrList); if (showList.size() < showBeans.size()) { showList.addAll(showBeans); fillShowList(showBeans); } } JSONArray barDetailList1 = result.getJSONArray("pub_list"); ArrayList<BarBean> barDetailBeans = (ArrayList<BarBean>) BarBean .constractList(barDetailList1); barDetailList.addAll(barDetailBeans); } JSONObject objEvent = null; if (!result.getString("activity").equals("null")) { objEvent = result.getJSONObject("activity"); // 加载活动图片 if(objEvent.has("pic_path")){ String imageUrl = BusinessHelper.PIC_BASE_URL + objEvent.getString("pic_path"); ivEvent.setTag(imageUrl); Drawable cacheDrawable = AsyncImageLoader.getInstance().loadDrawable(imageUrl, new ImageCallback() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { ImageView image = (ImageView) ivEvent.findViewWithTag(imageUrl); if (image != null) { if (imageDrawable != null) { ivEvent.setImageDrawable(imageDrawable); } else { ivEvent.setImageResource(R.drawable.ic_default); } } } }); if (cacheDrawable != null) { ivEvent.setImageDrawable(cacheDrawable); } else { ivEvent.setImageResource(R.drawable.ic_default); } }else{ ivEvent.setImageResource(R.drawable.ic_default); } tvEventTitle.setText(objEvent.getString("title")); tvEventEndTime.setText(objEvent.getString("start_date")+ "—" +objEvent.getString("end_date")); eventId = objEvent.getInt("id"); viewEventShow.setVisibility(View.VISIBLE); iscollect = objEvent.getBoolean("is_collect"); } else { viewEventShow.setVisibility(View.GONE); return; } } else { showShortToast(R.string.json_exception); } } catch (JSONException e) { showShortToast(R.string.json_exception); } } } else { showShortToast("服务器连接失败"); } } } /** * 收藏 * * @author Zhouyong * */ private class CollectTask extends AsyncTask<Void, Void, JSONObject> { @Override protected JSONObject doInBackground(Void... params) { int uid = SharedPrefUtil.getUid(BarDetailActivity.this); try { return new BusinessHelper().collectBar(uid, bean.getBar_id()); } catch (SystemException e) { return null; } } @Override protected void onPostExecute(JSONObject result) { super.onPostExecute(result); if (result != null) { try { int status = result.getInt("status"); if (status == Constants.REQUEST_SUCCESS) { showShortToast("收藏成功"); } else { showShortToast("你已经收藏过了"); } } catch (JSONException e) { showShortToast(R.string.json_exception); } } else { showShortToast(R.string.connect_server_exception); } isCollectingTask = false; } } /** * 填充签到数据 * * @param list * */ private void fillShowList(final List<BarBean> showlist) { if (showlist == null) { return; } for (int i = 0; i < showlist.size(); i++) { final BarBean showBean = showlist.get(i); LinearLayout.LayoutParams paramItem = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); paramItem.rightMargin = 6; final View view = getLayoutInflater().inflate(R.layout.show_item, null); view.setLayoutParams(paramItem); ImageView ivPhoto = (ImageView) view.findViewById(R.id.ivPhoto); String picUrl = showBean.getShowPhotoUrl(); ivPhoto.setTag(picUrl); Drawable cacheDrawble = AsyncImageLoader.getInstance().loadDrawable(picUrl, new ImageCallback() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { ImageView image = (ImageView) viewShowList.findViewWithTag(imageUrl); if (image != null) { if (imageDrawable != null) { image.setImageDrawable(imageDrawable); } else { image.setImageResource(R.drawable.ic_default); } } } }); if (cacheDrawble != null) { ivPhoto.setImageDrawable(cacheDrawble); } else { ivPhoto.setImageResource(R.drawable.ic_default); } ivPhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int uid = SharedPrefUtil.getUid(BarDetailActivity.this); if (uid == showBean.getUserId()) { openActivity(PersonalCenter.class); } else { Bundle b = new Bundle(); b.putSerializable(Constants.EXTRA_DATA, showBean.getUserId()); openActivity(FriendPersonalCenter.class, b); } } }); viewShowList.addView(view); } } // @Override // protected void onResume() { // super.onResume(); // if (NetUtil.checkNet(BarDetailActivity.this)) { // new GetBarDetailTask().execute(); // } else { // showShortToast(R.string.NoSignalException); // } // } }