package com.dreamspace.uucampus.ui.fragment.Market; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.dreamspace.uucampus.R; import com.dreamspace.uucampus.adapter.market.GoodDetailCommentListAdapter; import com.dreamspace.uucampus.adapter.market.GoodDetailInstListAdapter; import com.dreamspace.uucampus.api.ApiManager; import com.dreamspace.uucampus.common.utils.NetUtils; import com.dreamspace.uucampus.common.utils.PreferenceUtils; import com.dreamspace.uucampus.model.AllGoodsCommentRes; import com.dreamspace.uucampus.model.api.AllGoodsCommentItemRes; import com.dreamspace.uucampus.model.api.CommonStatusRes; import com.dreamspace.uucampus.model.api.DescriptionItem; import com.dreamspace.uucampus.ui.activity.Login.LoginActivity; import com.dreamspace.uucampus.ui.activity.Market.GoodDetailAct; import com.dreamspace.uucampus.ui.base.BaseLazyFragment; import com.dreamspace.uucampus.widget.LoadMoreListView; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.util.ArrayList; import java.util.List; import butterknife.Bind; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; /** * Created by Lx on 2015/10/10. */ public class GoodDetailPagerFragment extends BaseLazyFragment{ @Bind(R.id.good_detail_pager_lv) LoadMoreListView listView; private String type; private String goodId; private String description; private int commentPage = 1; private GoodDetailCommentListAdapter adapter; private boolean fragmentDestory = false; private boolean firstGetComment = true;//判断是不是第一次获取评论 @Override protected void onFirstUserVisible() { type = getArguments().getString(GoodDetailAct.TYPE,"null"); //判断当前fragment是用来显示商品详情还是评论的内容 if(type.equals(GoodDetailAct.DETAIL)){ description = getArguments().getString(GoodDetailAct.DETAIL); initDetailViews(); }else if(type.equals(GoodDetailAct.COMMENT)){ goodId = getArguments().getString(GoodDetailAct.COMMENT); getComments(); initCommentViews(); } } @Override protected void onUserVisible() { } @Override protected void onUserInvisible() { } @Override protected View getLoadingTargetView() { return null; } @Override protected void initViewsAndEvents() { } @Override protected int getContentViewLayoutID() { return R.layout.fragment_good_detail_pager; } private void initCommentViews(){ //评论界面则为listview添加loadmore事件 if(type.equals(GoodDetailAct.COMMENT)){ listView.setOnLoadMoreListener(new LoadMoreListView.OnLoadMoreListener() { @Override public void onLoadMore() { commentPage++; getComments(); } }); } } private void initDetailViews(){ listView.setDivider(null); ArrayList<DescriptionItem> descriptionItems; descriptionItems = new Gson().fromJson(description,new TypeToken<ArrayList<DescriptionItem>>(){}.getType()); GoodDetailInstListAdapter adapter = new GoodDetailInstListAdapter(mContext,descriptionItems,GoodDetailInstListAdapter.ViewHolder.class); listView.setAdapter(adapter); } private void getComments(){ if(!NetUtils.isNetworkConnected(mContext)){ showNetWorkError(); listView.setLoading(false); return; } ApiManager.getService(mContext).getAllGoodsComment(goodId, commentPage, new Callback<AllGoodsCommentRes>() { @Override public void success(AllGoodsCommentRes allGoodsCommentRes, Response response) { if (allGoodsCommentRes != null && !fragmentDestory) { listView.setLoading(false); //没有评论,无需进行下列步骤 if (allGoodsCommentRes.getGoods_comment().size() == 0) { return; } if (firstGetComment) { //第一次获取评论 initAdatper(allGoodsCommentRes.getGoods_comment()); firstGetComment = false; } else { adapter.addEntities(allGoodsCommentRes.getGoods_comment()); adapter.notifyDataSetChanged(); } } } @Override public void failure(RetrofitError error) { showInnerError(error); listView.setLoading(false); } }); } private void commentUsefulAdd(String commentId, final ImageView likeIv, final TextView likeTv, final AllGoodsCommentItemRes entity){ if(!NetUtils.isNetworkConnected(mContext)){ showNetWorkError(); return; } ApiManager.getService(mContext).addGoodsUseful(goodId, commentId, new Callback<CommonStatusRes>() { @Override public void success(CommonStatusRes commonStatusRes, Response response) { if (commonStatusRes != null && !fragmentDestory) { likeIv.setImageDrawable(getResources().getDrawable(R.drawable.comment_like_icon_p)); likeTv.setTextColor(getResources().getColor(R.color.app_theme_color)); int num = entity.getUseful_number() + 1; likeTv.setText(mContext.getString(R.string.useful) + num + mContext.getString(R.string.useful2)); //更改adapter中的数据,使其与服务器同步 adapter.getmEntities().get(adapter.getmEntities().indexOf(entity)).setUseful_clicked(1); adapter.getmEntities().get(adapter.getmEntities().indexOf(entity)).setUseful_number(entity.getUseful_number() + 1); } } @Override public void failure(RetrofitError error) { showInnerError(error); } }); } private void commentUsefulCancel(String commentId, final ImageView likeIv, final TextView likeTv, final AllGoodsCommentItemRes entity){ if(!NetUtils.isNetworkConnected(mContext)){ showNetWorkError(); return; } ApiManager.getService(mContext).cancelGoodsUseful(goodId, commentId, new Callback<CommonStatusRes>() { @Override public void success(CommonStatusRes commonStatusRes, Response response) { if (commonStatusRes != null && !fragmentDestory) { likeIv.setImageDrawable(getResources().getDrawable(R.drawable.comment_like_icon)); likeTv.setTextColor(getResources().getColor(R.color.text_normal)); int num = entity.getUseful_number() - 1; likeTv.setText(mContext.getString(R.string.useful) + num + mContext.getString(R.string.useful2)); //更改adapter中的数据,使其与服务器同步 adapter.getmEntities().get(adapter.getmEntities().indexOf(entity)).setUseful_clicked(0); adapter.getmEntities().get(adapter.getmEntities().indexOf(entity)).setUseful_number(entity.getUseful_number() - 1); } } @Override public void failure(RetrofitError error) { showInnerError(error); } }); } private void initAdatper(ArrayList<AllGoodsCommentItemRes> allGoodsCommentRes){ adapter = new GoodDetailCommentListAdapter(mContext, allGoodsCommentRes, GoodDetailCommentListAdapter.ViewHolder.class); listView.setAdapter(adapter); adapter.setOnUsefulClickListener(new GoodDetailCommentListAdapter.OnUsefulClickListener() { @Override public void onUserfulClick(String commentId, int usefulClick, ImageView likeIv, TextView likeTv, AllGoodsCommentItemRes entity) { if(!PreferenceUtils.hasKey(mContext, PreferenceUtils.Key.LOGIN) || !PreferenceUtils.getBoolean(mContext,PreferenceUtils.Key.LOGIN)){ //未登录 readyGo(LoginActivity.class); }else{ if (usefulClick == 1) { commentUsefulCancel(commentId, likeIv, likeTv, entity); } else { commentUsefulAdd(commentId, likeIv, likeTv, entity); } } } }); } @Override public void onDestroy() { fragmentDestory = true; super.onDestroy(); } }