package com.dreamspace.uucampus.ui.fragment.FreeGoods; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import com.dreamspace.uucampus.R; import com.dreamspace.uucampus.adapter.FreeGoods.FreeGoodsCommentItemAdapter; import com.dreamspace.uucampus.api.ApiManager; 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.FreeGoodsCommentItem; import com.dreamspace.uucampus.model.api.AddIdleCommentRes; import com.dreamspace.uucampus.model.api.CommentItem; import com.dreamspace.uucampus.model.api.ContentReq; import com.dreamspace.uucampus.model.api.IdleAllCommentRes; import com.dreamspace.uucampus.ui.activity.FreeGoods.FreeGoodsDetailActivity; import com.dreamspace.uucampus.ui.activity.Login.LoginActivity; import com.dreamspace.uucampus.ui.base.BaseLazyFragment; import com.dreamspace.uucampus.ui.dialog.ProgressDialog; import com.dreamspace.uucampus.widget.LoadMoreListView; import java.util.List; import butterknife.Bind; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; /** * Created by wufan on 2015/9/21. */ public class FreeGoodsDetailBottomCommentFragment extends BaseLazyFragment { @Bind(R.id.goods_detail_bottom_comment_list_view) LoadMoreListView mListView; @Bind(R.id.free_goods_detail_comment_publish_button) Button mPublishBtn; @Bind(R.id.free_goods_detail_comment_edit_text) EditText mCommentEditText; private FreeGoodsCommentItemAdapter mAdapter; private List<CommentItem> data; private String idle_id = null; private int page = 1; private ContentReq req = new ContentReq(); public static final int ADD = 2; public static final int LOAD = 1; @Override protected void onFirstUserVisible() { idle_id = getArguments().getString(FreeGoodsDetailActivity.EXTRA_IDLE_ID); //进入详情页面,此方法没有调用 } @Override protected void onUserVisible() { } @Override protected void onUserInvisible() { } @Override protected View getLoadingTargetView() { return mListView; } @Override protected void initViewsAndEvents() { idle_id = getArguments().getString(FreeGoodsDetailActivity.EXTRA_IDLE_ID); initCommentData(); mAdapter = new FreeGoodsCommentItemAdapter(getActivity()); adapterUsefulCallBack(); //adapter实现有用评论点击回调函数 mListView.setAdapter(mAdapter); mListView.setOnLoadMoreListener(new LoadMoreListView.OnLoadMoreListener() { @Override public void onLoadMore() { onPullUp(); } }); mPublishBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (!PreferenceUtils.hasKey(getActivity(), PreferenceUtils.Key.LOGIN) || !PreferenceUtils.getBoolean(getActivity(), PreferenceUtils.Key.LOGIN)) { readyGo(LoginActivity.class); } else { publishComment(); } } }); } @Override protected int getContentViewLayoutID() { return R.layout.fragment_free_goods_detail_bottom_comment; } private void publishComment() { if (mCommentEditText.length() == 0) { showToast("请写评论"); } else { req.setContent(mCommentEditText.getText().toString()); mCommentEditText.setText(""); final ProgressDialog pd = new ProgressDialog(mContext); pd.setContent("正在添加"); pd.show(); // final ProgressDialog pd = ProgressDialog.show(getActivity(), "", "正在添加", true, false); if (NetUtils.isNetworkConnected(getActivity().getApplicationContext())) { ApiManager.getService(getActivity().getApplicationContext()).addIdleComment(idle_id, req, new Callback<AddIdleCommentRes>() { @Override public void success(AddIdleCommentRes addIdleCommentRes, Response response) { initCommentData(); pd.dismiss(); } @Override public void failure(RetrofitError error) { showInnerError(error); pd.dismiss(); } }); } else { showNetWorkError(); pd.dismiss(); } } } public void refreshDate(List<FreeGoodsCommentItem> mEntities, int type) { switch (type) { case LOAD: mAdapter.setmEntities(mEntities); break; case ADD: mAdapter.addEntities(mEntities); break; default: break; } mAdapter.notifyDataSetChanged(); } public void initCommentData() { // toggleShowLoading(true, getString(R.string.common_loading_message)); page = 1; loadingCommentByPage(page, new OnRefreshListener<FreeGoodsCommentItem>() { @Override public void onFinish(List<FreeGoodsCommentItem> mEntities) { if (mEntities != null && mEntities.size() == 0) { // toggleShowEmpty(true, getString(R.string.common_empty_msg), null); } else { // toggleShowLoading(false, null); refreshDate(mEntities, LOAD); } } @Override public void onError() { // toggleShowError(true, getString(R.string.common_error_msg), new View.OnClickListener() { // @Override // public void onClick(View v) { // initCommentData(); // } // }); } }); } public void onPullUp() { //上拉刷新,加载更多 loadingCommentByPage(++page, new OnRefreshListener<FreeGoodsCommentItem>() { @Override public void onFinish(List mEntities) { refreshDate(mEntities, ADD); onPullUpFinished(); } @Override public void onError() { onPullUpFinished(); } }); } public void onPullUpFinished() { mListView.setLoading(false); } void loadingCommentByPage(int page, final OnRefreshListener onRefreshListener) { if (NetUtils.isNetworkConnected(getActivity().getApplicationContext())) { ApiManager.getService(getActivity().getApplicationContext()).getIdleComment(idle_id, page, new Callback<IdleAllCommentRes>() { @Override public void success(IdleAllCommentRes idleAllCommentRes, Response response) { if (idleAllCommentRes.getIdle_comment() != null) { onRefreshListener.onFinish(idleAllCommentRes.getIdle_comment()); } else { showToast(response.getReason()); onRefreshListener.onError(); } } @Override public void failure(RetrofitError error) { onRefreshListener.onError(); showInnerError(error); } }); } else { showNetWorkError(); } } //adapter实现有用评论点击回调函数 private void adapterUsefulCallBack() { mAdapter.setUpdateData(new FreeGoodsCommentItemAdapter.UpdateData() { @Override public void updateUsefulData(String comment_id, boolean useful_clicked, final TextView mUsefulTv, final ImageView mUserIv, final FreeGoodsCommentItem entity) { if (!PreferenceUtils.hasKey(getActivity(), PreferenceUtils.Key.LOGIN) || !PreferenceUtils.getBoolean(getActivity(), PreferenceUtils.Key.LOGIN)) { readyGo(LoginActivity.class); } else { if (NetUtils.isNetworkConnected(getActivity().getApplicationContext())) { if (useful_clicked) { //评论有用 取消 转 评论无用 // final ProgressDialog pd = new ProgressDialog(mContext); // pd.setContent("有用评取消"); // pd.show(); ApiManager.getService(getActivity().getApplicationContext()).cancelIdleCommentUseful(idle_id, comment_id, new Callback<Response>() { @Override public void success(Response response, Response response2) { TLog.i("有用评论取消:", "true"); // 更新adapter中的ui mUsefulTv.setText(String.valueOf(entity.getUseful_number()-1)); mUserIv.setImageResource(R.drawable.comment_like_icon); // 更新缓存 entity.setUseful_number(entity.getUseful_number()-1); entity.setUseful_clicked(false); showToast("有用评论取消"); // pd.dismiss(); } @Override public void failure(RetrofitError error) { showInnerError(error); // pd.dismiss(); } }); } else { //评论无用 转 评论有用 final ProgressDialog pd = new ProgressDialog(mContext); // pd.setContent("有用评论添加"); // pd.show(); ApiManager.getService(getActivity().getApplicationContext()).addIdleCommentUseful(idle_id, comment_id, new Callback<Response>() { @Override public void success(Response response, Response response2) { TLog.i("有用评论添加:", "true"); // 更新adapter中的ui mUsefulTv.setText(String.valueOf(entity.getUseful_number()+1)); mUserIv.setImageResource(R.drawable.comment_like_icon_p); // 更新缓存 entity.setUseful_number(entity.getUseful_number() + 1); entity.setUseful_clicked(true); // pd.dismiss(); showToast("有用评论添加"); } @Override public void failure(RetrofitError error) { showInnerError(error); // pd.dismiss(); } }); } } else { showNetWorkError(); } } } }); } }