package com.dreamspace.uucampus.ui.activity.Market; import android.content.Intent; import android.graphics.Paint; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.dreamspace.uucampus.R; import com.dreamspace.uucampus.api.ApiManager; import com.dreamspace.uucampus.common.Share; import com.dreamspace.uucampus.common.utils.CommonUtils; import com.dreamspace.uucampus.common.utils.DensityUtils; import com.dreamspace.uucampus.common.utils.NetUtils; import com.dreamspace.uucampus.common.utils.PreferenceUtils; import com.dreamspace.uucampus.common.utils.TLog; import com.dreamspace.uucampus.model.ErrorRes; import com.dreamspace.uucampus.model.api.AddGoodsCollectionRes; import com.dreamspace.uucampus.model.api.CommonStatusRes; import com.dreamspace.uucampus.model.api.GoodsInfoRes; import com.dreamspace.uucampus.ui.activity.Login.LoginActivity; import com.dreamspace.uucampus.ui.activity.Order.OrderConfirmAct; import com.dreamspace.uucampus.ui.base.AbsActivity; import com.dreamspace.uucampus.ui.dialog.ConnectSellerDialog; import com.dreamspace.uucampus.ui.fragment.Market.GoodDetailPagerFragment; import com.ogaclejapan.smarttablayout.SmartTabLayout; import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItemAdapter; import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItems; import com.umeng.socialize.sso.UMSsoHandler; import butterknife.Bind; import de.hdodenhof.circleimageview.CircleImageView; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; /** * Created by Lx on 2015/10/8. * 进入此activity需要传入相关商品的good_id */ public class GoodDetailAct extends AbsActivity { @Bind(R.id.detail_comment_stl) SmartTabLayout tabLayout; @Bind(R.id.detail_comment_view_pager) ViewPager detailViewPager; @Bind(R.id.shop_ll) LinearLayout shopLl; @Bind(R.id.consult_ll) LinearLayout consultLl; @Bind(R.id.collect_ll) LinearLayout collect_ll; @Bind(R.id.shop_name_ll) LinearLayout shopNameLl; @Bind(R.id.buy_btn) Button buyBtn; @Bind(R.id.collect_iv) ImageView collectIv; @Bind(R.id.good_detail_image_iv) ImageView goodIv; @Bind(R.id.good_name_tv) TextView goodNameTv; @Bind(R.id.shop_image_civ) CircleImageView shopImageCiv; @Bind(R.id.shop_name_tv) TextView shopNameTv; @Bind(R.id.people_like_tv) TextView peopleLikeTv; @Bind(R.id.sale_num_tv) TextView saleNumTv; @Bind(R.id.last_update_tv) TextView lastUpdateTv; @Bind(R.id.good_detail_price_tv) TextView priceTv; @Bind(R.id.price_before_reduce_tv) TextView priceBeforeReduceTv; @Bind(R.id.content_rl) RelativeLayout contentRl; private String goodId; private boolean actDestory = false; private GoodsInfoRes goodInfo;//当前商品的信息 public static final String TYPE = "type"; public static final String DETAIL="detail"; public static final String COMMENT="comment"; public static final String GOOD_ID = "good_id"; public static final String GOOD_CURRENT_COLLCET_STATE = "CURRENT_COLLECT_STATE"; @Override protected int getContentView() { return R.layout.activity_good_detail; } @Override protected void prepareDatas() { Bundle bundle = getIntent().getExtras(); goodId = bundle.getString(GOOD_ID); getGoodInfo(); } @Override protected void initViews() { getSupportActionBar().setTitle(getResources().getString(R.string.detial)); priceBeforeReduceTv.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); initListeners(); } @Override protected View getLoadingTargetView() { return contentRl; } private void initListeners(){ shopLl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { readyGo(ShopShowGoodsAct.class); } }); //创建咨询对话框并显示 consultLl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ConnectSellerDialog dialog = new ConnectSellerDialog(GoodDetailAct.this, R.style.UpDialog, goodInfo.getName(), goodInfo.getPhone_num()); Window window = dialog.getWindow(); WindowManager.LayoutParams layoutParams = window.getAttributes(); layoutParams.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL; layoutParams.y = DensityUtils.dip2px(GoodDetailAct.this, 80);//int)(80*getResources().getDisplayMetrics().density); window.setAttributes(layoutParams); dialog.show(); } }); shopNameLl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bundle bundle = new Bundle(); bundle.putString(ShopShowGoodsAct.SHOP_ID, goodInfo.getShop_id()); bundle.putString(ShopShowGoodsAct.SHOP_NAME, goodInfo.getShop_name()); readyGo(ShopShowGoodsAct.class, bundle); } }); //同shopnameLl点击效果一样,都是将shopid和shopname传递到下个界面 shopLl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bundle bundle = new Bundle(); bundle.putString(ShopShowGoodsAct.SHOP_ID, goodInfo.getShop_id()); bundle.putString(ShopShowGoodsAct.SHOP_NAME, goodInfo.getShop_name()); readyGo(ShopShowGoodsAct.class, bundle); } }); buyBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(!PreferenceUtils.hasKey(GoodDetailAct.this, PreferenceUtils.Key.LOGIN) || !PreferenceUtils.getBoolean(GoodDetailAct.this,PreferenceUtils.Key.LOGIN)){ //未登录 readyGo(LoginActivity.class); }else{ Bundle bundle = new Bundle(); bundle.putString(OrderConfirmAct.GOOD_NAME, goodInfo.getName()); bundle.putString(OrderConfirmAct.PRICE, goodInfo.getPrice() + ""); bundle.putString(OrderConfirmAct.DISCOUNT, goodInfo.getDiscount() + ""); bundle.putString(OrderConfirmAct.GOOD_ID, goodId); readyGo(OrderConfirmAct.class, bundle); } } }); collect_ll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(goodInfo != null){ if(!PreferenceUtils.hasKey(GoodDetailAct.this, PreferenceUtils.Key.LOGIN) || !PreferenceUtils.getBoolean(GoodDetailAct.this,PreferenceUtils.Key.LOGIN)){ //未登录 readyGo(LoginActivity.class); }else{ if(goodInfo.getIs_collected() == 0){ addGoodCollection(); }else{ cancelGoodCollection(); } } } } }); } private void initStl(){ Bundle detailBundle = new Bundle(); detailBundle.putString(DETAIL,goodInfo.getDescription()); detailBundle.putString(TYPE,DETAIL); Bundle commentBundle = new Bundle(); commentBundle.putString(COMMENT, goodId); commentBundle.putString(TYPE, COMMENT); FragmentPagerItemAdapter pagerAdapter = new FragmentPagerItemAdapter(getSupportFragmentManager(), FragmentPagerItems.with(this) .add(R.string.detial, GoodDetailPagerFragment.class, detailBundle) .add(R.string.comment, GoodDetailPagerFragment.class, commentBundle) .create() ); tabLayout.setCustomTabView(R.layout.good_detail_stl_title_tab, R.id.detail_stl_title_tv); detailViewPager.setAdapter(pagerAdapter); tabLayout.setViewPager(detailViewPager); } //获取商品详细信息 private void getGoodInfo(){ toggleShowLoading(true, null); if(!NetUtils.isNetworkConnected(this)){ showNetWorkError(); toggleNetworkError(true, getGoodInfoClickListener); return; } ApiManager.getService(this).getGoodsInfo(goodId, new Callback<GoodsInfoRes>() { @Override public void success(GoodsInfoRes goodsInfoRes, Response response) { if (goodsInfoRes != null && !actDestory) { if(goodsInfoRes.getIs_active() == 0){ //货物已下架,无法查看 toggleShowEmpty(true,getString(R.string.good_is_not_active),null); }else{ toggleRestore(); goodInfo = goodsInfoRes; setInfoIntoViews(goodsInfoRes); initStl(); } } } @Override public void failure(RetrofitError error) { showInnerError(error); toggleShowEmpty(true, null, getGoodInfoClickListener); } }); } //添加商品收藏 private void addGoodCollection(){ if(!NetUtils.isNetworkConnected(this)){ showNetWorkError(); return; } ApiManager.getService(this).addGoodsCollection(goodId, new Callback<AddGoodsCollectionRes>() { @Override public void success(AddGoodsCollectionRes addGoodsCollectionRes, Response response) { if (addGoodsCollectionRes != null && !actDestory) { goodInfo.setIs_collected(1);//更改本地数据,使其与服务器同步 collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_p)); showToast(getString(R.string.collect_success)); } } @Override public void failure(RetrofitError error) { ErrorRes errorRes = (ErrorRes) error.getBodyAs(ErrorRes.class); //已收藏,不会发生已收藏但图标不变的情况(发生在未登录的情况下在此页面登录) if(errorRes.getCode() == 406){ showToast(getString(R.string.collect_success)); goodInfo.setIs_collected(1);//更改本地数据,使其与服务器同步 collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_p)); }else{ showInnerError(error); } } }); } //商品收藏取消 private void cancelGoodCollection(){ if(!NetUtils.isNetworkConnected(this)){ showNetWorkError(); return; } ApiManager.getService(this).deleteGoodsCollection(goodId, new Callback<CommonStatusRes>() { @Override public void success(CommonStatusRes commonStatusRes, Response response) { if(commonStatusRes != null && !actDestory){ goodInfo.setIs_collected(0); collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_n)); showToast(getString(R.string.collect_cancel)); } } @Override public void failure(RetrofitError error) { showInnerError(error); } }); } //将商品详细信息填入view private void setInfoIntoViews(GoodsInfoRes goodsInfoRes){ CommonUtils.showImageWithGlide(this, goodIv, goodsInfoRes.getImage()); CommonUtils.showImageWithGlideInCiv(this, shopImageCiv, goodsInfoRes.getShop_image()); goodNameTv.setText(goodsInfoRes.getName()); shopNameTv.setText(goodsInfoRes.getShop_name()); priceBeforeReduceTv.setText(getString(R.string.RMB) + (float)goodsInfoRes.getOriginal_price() / 100); priceTv.setText(getString(R.string.RMB) + (float)goodsInfoRes.getPrice() / 100); peopleLikeTv.setText(goodsInfoRes.getView_number() + getString(R.string.x_people_like)); saleNumTv.setText(goodsInfoRes.getSales_number() + getString(R.string.x_people_bought)); lastUpdateTv.setText(goodsInfoRes.getLast_update()); if(goodsInfoRes.getIs_collected() == 1){ collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_p)); }else{ collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_n)); } } @Override public void onBackPressed() { if(goodInfo != null){ //为“我的收藏”界面返回当前此商品的收藏状态 Intent data = new Intent(); data.putExtra(GOOD_CURRENT_COLLCET_STATE,goodInfo.getIs_collected()); setResult(RESULT_OK,data); } super.onBackPressed(); } @Override protected void onDestroy() { actDestory = true; super.onDestroy(); } private View.OnClickListener getGoodInfoClickListener = new View.OnClickListener() { @Override public void onClick(View v) { getGoodInfo(); } }; }