package com.dreamspace.uucampus.ui.activity.FreeGoods; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; 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.NetUtils; import com.dreamspace.uucampus.common.utils.PreferenceUtils; import com.dreamspace.uucampus.model.api.GetIdleInfoRes; import com.dreamspace.uucampus.model.api.LikeIdleRes; import com.dreamspace.uucampus.ui.activity.Login.LoginActivity; import com.dreamspace.uucampus.ui.base.AbsActivity; import com.dreamspace.uucampus.ui.fragment.FreeGoods.FreeGoodsDetailBottomCommentFragment; import com.dreamspace.uucampus.ui.fragment.FreeGoods.FreeGoodsDetailBottomInfoFragment; import com.dreamspace.uucampus.ui.fragment.FreeGoods.FreeGoodsLazyListFragment; 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; //进入此activity需要传入idle_id public class FreeGoodsDetailActivity extends AbsActivity { @Bind(R.id.free_good_detail_comment_stl) SmartTabLayout tabLayout; @Bind(R.id.free_good_detail_comment_view_pager) ViewPager detailViewPager; @Bind(R.id.free_goods_detail_name_tv) TextView mGoodsNameTv; @Bind(R.id.free_goods_detail_user_name_tv) TextView mUserNameTv; @Bind(R.id.free_good_detail_image_iv) ImageView mImageIv; @Bind(R.id.free_goods_detail_create_time_tv) TextView mDateTv; @Bind(R.id.free_goods_detail_like_tv) TextView mLikeTv; @Bind(R.id.free_good_detail_price_tv) TextView mPriceTv; @Bind(R.id.free_goods_detail_people_view_tv) TextView mViewTv; @Bind(R.id.free_good_detail_like_no_click_iv) ImageView mLikeIv; @Bind(R.id.free_goods_detail_shop_name_image_cv) CircleImageView mUserImage; @Bind(R.id.content_ll) LinearLayout contentLl; public static final String TYPE = "type"; public static final String DETAIL = "detail"; public static final String COMMENT= "comment"; public static final String EXTRA_IDLE_ID="idle_id"; public static final String IDLE_CURRENT_COLLECT_STATE = "IDLE_CURRENT_COLLECT_STATE"; private String idle_id=null; private String content=null; private String is_collection=null; private String goodsName=null; private String phoneNum=null; private boolean bLike=false; private int likeNum=0; private boolean isActDestroy=false; @Override protected int getContentView() { return R.layout.activity_free_goods_detail; } @Override protected void prepareDatas() { Bundle bundle = getIntent().getExtras(); idle_id = bundle.getString(EXTRA_IDLE_ID); loadingInitData(); //初始化界面数据 } @Override protected void initViews() { initListeners(); } private void initListeners(){ mLikeIv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (!PreferenceUtils.hasKey(FreeGoodsDetailActivity.this, PreferenceUtils.Key.LOGIN) || !PreferenceUtils.getBoolean(FreeGoodsDetailActivity.this, PreferenceUtils.Key.LOGIN)) { readyGo(LoginActivity.class); } else { likeIdle(bLike); } } }); } @Override protected View getLoadingTargetView() { return contentLl; } private void loadingInitData() { toggleShowLoading(true, null); if(NetUtils.isNetworkConnected(this.getApplicationContext())){ ApiManager.getService(this.getApplicationContext()).getIdleInfo(idle_id, new Callback<GetIdleInfoRes>() { @Override public void success(GetIdleInfoRes getIdleInfoRes, Response response) { if(!isActDestroy) { toggleRestore(); initViewData(getIdleInfoRes); } } @Override public void failure(RetrofitError error) { showInnerError(error); toggleShowEmpty(true,null,clickGetDetailListener); } }); }else{ showNetWorkError(); toggleNetworkError(true,clickGetDetailListener); } } private void initStl(){ getSupportActionBar().setTitle(getResources().getString(R.string.detial)); FragmentPagerItemAdapter pagerAdapter = new FragmentPagerItemAdapter(getSupportFragmentManager(), FragmentPagerItems.with(this) .add(R.string.detial, FreeGoodsDetailBottomInfoFragment.class, getBundles(0)) .add(R.string.comment, FreeGoodsDetailBottomCommentFragment.class, getBundles(1)) .create() ); tabLayout.setCustomTabView(R.layout.good_detail_stl_title_tab, R.id.detail_stl_title_tv); detailViewPager.setAdapter(pagerAdapter); tabLayout.setViewPager(detailViewPager); } private void likeIdle(final boolean like) { if(NetUtils.isNetworkConnected(this.getApplicationContext())){ if(like) { //取消点赞 ApiManager.getService(this.getApplicationContext()).unLikeIdle(idle_id, new Callback<Response>() { @Override public void success(Response response, Response response2) { showToast("取消点赞"); updateUI(like); } @Override public void failure(RetrofitError error) { showInnerError(error); } }); }else{ //添加点赞 ApiManager.getService(this.getApplicationContext()).likeIdle(idle_id, new Callback<LikeIdleRes>() { @Override public void success(LikeIdleRes likeIdleRes, Response response) { showToast("成功点赞"); //更新UI updateUI(like); } @Override public void failure(RetrofitError error) { showInnerError(error); } }); } }else{ showNetWorkError(); } } private Bundle getBundles(int index){ Bundle bundle = new Bundle(); if(index < 2){ if(index == 0){ bundle.putString(TYPE,DETAIL); bundle.putString(EXTRA_IDLE_ID,idle_id); bundle.putString(FreeGoodsDetailBottomInfoFragment.EXTRA_CONTENT,content); bundle.putString(FreeGoodsDetailBottomInfoFragment.EXTRA_IS_COLLECTION,is_collection); bundle.putString(FreeGoodsDetailBottomInfoFragment.EXTRA_GOODS_NAME,goodsName); bundle.putString(FreeGoodsDetailBottomInfoFragment.EXTRA_PHONE_NUM,phoneNum); }else{ bundle.putString(TYPE,COMMENT); bundle.putString(EXTRA_IDLE_ID,idle_id); } } return bundle; } private void initViewData(GetIdleInfoRes getIdleInfoRes) { CommonUtils.showImageWithGlide(this, mImageIv, getIdleInfoRes.getImage()); mGoodsNameTv.setText(getIdleInfoRes.getName()); mUserNameTv.setText(getIdleInfoRes.getUser_name()); CommonUtils.showImageWithGlide(this, mUserImage, getIdleInfoRes.getUser_image()); mPriceTv.setText(String.valueOf(getIdleInfoRes.getPrice()/ Float.valueOf(100))+getResources().getString(R.string.yuan)); mViewTv.setText(String.valueOf(getIdleInfoRes.getView_number())+getResources().getString(R.string.interest)); //感兴趣的人 mLikeTv.setText(String.valueOf(getIdleInfoRes.getLike_number())+getResources().getString(R.string.like)); mDateTv.setText(getIdleInfoRes.getLast_update()); if(Integer.parseInt(getIdleInfoRes.getLike_clicked())==1){ //已点赞状态 mLikeIv.setImageResource(R.drawable.xiangqing_btn_dianzan); bLike=true; }else{ mLikeIv.setImageResource(R.drawable.xiangqing_btn_dianzan_p); //未点赞状态 bLike=false; } likeNum=getIdleInfoRes.getLike_number(); //保存信息传到子fragment中显示与请求 content =getIdleInfoRes.getDescription(); is_collection=getIdleInfoRes.getIs_collected(); goodsName=getIdleInfoRes.getName(); phoneNum=getIdleInfoRes.getPhone_num(); initStl(); //必须在idle_id和content,is_collection都拿到后再传给fragment } private void updateLikeNum(int likeNum) { //点赞实时更新点赞数,同时写入后台 } private void updateUI(boolean like) { //后端传送成功后更新前端ui if(like){ //取消点赞 bLike = false; likeNum-=1; mLikeIv.setImageResource(R.drawable.xiangqing_btn_dianzan_p); }else { //添加点赞 bLike = true; mLikeIv.setImageResource(R.drawable.xiangqing_btn_dianzan); likeNum+=1; } mLikeTv.setText(String.valueOf(likeNum + getResources().getString(R.string.like))); } @Override protected void onDestroy() { super.onDestroy(); isActDestroy=true; } @Override public void onBackPressed() { if(is_collection != null ){ //为“我的收藏”界面返回当前闲置的收藏状态 Intent data = new Intent(); data.putExtra(IDLE_CURRENT_COLLECT_STATE, Integer.parseInt(is_collection)); setResult(RESULT_OK,data); } setResult(FreeGoodsLazyListFragment.RESULT_CODE); super.onBackPressed(); } private View.OnClickListener clickGetDetailListener = new View.OnClickListener() { @Override public void onClick(View v) { loadingInitData(); } }; }