文章详情增加评论入口
This commit is contained in:
@ -2,6 +2,7 @@ package com.gh.gamecenter;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Build;
|
||||
@ -14,13 +15,16 @@ import android.view.View;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.EditText;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.android.volley.Response;
|
||||
import com.android.volley.VolleyError;
|
||||
import com.android.volley.toolbox.DiskBasedCache;
|
||||
import com.facebook.drawee.view.SimpleDraweeView;
|
||||
import com.gh.base.AppController;
|
||||
import com.gh.base.BaseActivity;
|
||||
import com.gh.common.constant.Config;
|
||||
import com.gh.common.util.DialogUtils;
|
||||
@ -33,19 +37,29 @@ import com.gh.gamecenter.adapter.MessageDetailAdapter;
|
||||
import com.gh.gamecenter.db.CommentDao;
|
||||
import com.gh.gamecenter.db.info.CommentInfo;
|
||||
import com.gh.gamecenter.entity.CommentEntity;
|
||||
import com.gh.gamecenter.entity.ConcernEntity;
|
||||
import com.gh.gamecenter.entity.ViewsEntity;
|
||||
import com.gh.gamecenter.manager.CommentManager;
|
||||
import com.gh.gamecenter.retrofit.RetrofitManager;
|
||||
import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import butterknife.OnTouch;
|
||||
import rx.android.schedulers.AndroidSchedulers;
|
||||
import rx.functions.Action1;
|
||||
import rx.schedulers.Schedulers;
|
||||
|
||||
/**
|
||||
* Created by khy on 2016/11/8.
|
||||
@ -60,9 +74,10 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
@BindView(R.id.comment_user_name) TextView mMessageDetailUserNameTv;
|
||||
@BindView(R.id.comment_send) TextView mMessageDetailCommentSend;
|
||||
@BindView(R.id.message_detail_comment_et) EditText mMessageDetailEt;
|
||||
@BindView(R.id.message_detail_comment_hint) TextView mMessageDetailCommentHint;
|
||||
@BindView(R.id.message_detail_comment_hint_rl) RelativeLayout mMessageDetailCommentHintRl;
|
||||
@BindView(R.id.message_detail_sv) ScrollView mMessageDetailSv;
|
||||
@BindView(R.id.message_detail_hint_line) View mMessageDetailLine;
|
||||
@BindView(R.id.reuse_no_connection) LinearLayout mNoConnection;
|
||||
|
||||
private LinearLayoutManager mLayoutManager;
|
||||
|
||||
@ -74,10 +89,24 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
|
||||
private CommentDao mCommentDao;
|
||||
|
||||
private ConcernEntity mConcernEntity;
|
||||
|
||||
private String newsId;
|
||||
|
||||
private int commentNum;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
mConcernEntity = (ConcernEntity) AppController.get("ConcernEntity", true);
|
||||
|
||||
if (mConcernEntity == null) {
|
||||
Intent intent = getIntent();
|
||||
newsId = intent.getExtras().getString("newsId");
|
||||
commentNum = intent.getExtras().getInt("commentNum");
|
||||
}
|
||||
|
||||
View contentView = View.inflate(this, R.layout.activity_messagedetail, null);
|
||||
init(contentView, "消息详情");
|
||||
|
||||
@ -87,7 +116,7 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
|
||||
mCommentDao = new CommentDao(this);
|
||||
|
||||
adapter = new MessageDetailAdapter(this, mCommentDao, mMessageDetailRv);
|
||||
adapter = new MessageDetailAdapter(this, mCommentDao, mMessageDetailRv, mConcernEntity);
|
||||
mLayoutManager = new LinearLayoutManager(this);
|
||||
mMessageDetailRv.setLayoutManager(mLayoutManager);
|
||||
mMessageDetailRv.setAdapter(adapter);
|
||||
@ -99,11 +128,12 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
@Override
|
||||
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
||||
if (newState == RecyclerView.SCROLL_STATE_IDLE
|
||||
&& !adapter.isOver() && !adapter.isLoading()
|
||||
&& !adapter.isOver() && !adapter.isLoading() && mConcernEntity != null
|
||||
&& mLayoutManager.findLastVisibleItemPosition() == adapter.getItemCount() - 1) {
|
||||
|
||||
adapter.addNormalComment(adapter.getItemCount() - adapter.getHotCommentListSize() - 3);
|
||||
|
||||
int offset = adapter.getItemCount() - adapter.getHotCommentListSize() - 3;
|
||||
if (offset >= 10) { // 防止自动上滑时触发
|
||||
adapter.addNormalComment(offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -117,8 +147,14 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
MessageDetailActivity.this.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mMessageDetailIconDv.setImageURI(sp.getString("user_icon", "res:///"+
|
||||
R.drawable.user_default_icon_comment));
|
||||
if (sp.getString("user_icon", "res:///"+
|
||||
R.drawable.user_default_icon_comment).isEmpty()) {
|
||||
mMessageDetailIconDv.setImageURI("res:///" +
|
||||
R.drawable.user_default_icon_comment);
|
||||
} else {
|
||||
mMessageDetailIconDv.setImageURI(sp.getString("user_icon", "res:///"+
|
||||
R.drawable.user_default_icon_comment));
|
||||
}
|
||||
mMessageDetailUserNameTv.setText(sp.getString("user_name", "光环用户"));
|
||||
}
|
||||
});
|
||||
@ -126,8 +162,12 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
}).start();
|
||||
|
||||
} else {
|
||||
mMessageDetailIconDv.setImageURI(sp.getString("user_icon", "res:///"+
|
||||
R.drawable.user_default_icon_comment));
|
||||
if (sp.getString("user_icon", "res:///"+ R.drawable.user_default_icon_comment).isEmpty()) {
|
||||
mMessageDetailIconDv.setImageURI("res:///" + R.drawable.user_default_icon_comment);
|
||||
} else {
|
||||
mMessageDetailIconDv.setImageURI(sp.getString("user_icon", "res:///"+
|
||||
R.drawable.user_default_icon_comment));
|
||||
}
|
||||
mMessageDetailUserNameTv.setText(sp.getString("user_name", "光环用户"));
|
||||
}
|
||||
|
||||
@ -148,6 +188,52 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
});
|
||||
}
|
||||
|
||||
if (newsId != null ) {
|
||||
getConcernDigest();
|
||||
}
|
||||
}
|
||||
|
||||
private void getConcernDigest() {
|
||||
JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(Config.HOST + "article/"+ newsId +"/rich-digest",
|
||||
new Response.Listener<JSONObject>() {
|
||||
@Override
|
||||
public void onResponse(JSONObject response) {
|
||||
Type listType = new TypeToken<ConcernEntity>() {}.getType();
|
||||
Gson gson = new Gson();
|
||||
mConcernEntity = gson.fromJson(response.toString(), listType);
|
||||
adapter.addConcernEntity(mConcernEntity);
|
||||
adapter.notifyDataSetChanged();
|
||||
adapter.addHotComment(0);
|
||||
getNewsViews();
|
||||
|
||||
if (commentNum == 0) {
|
||||
setSoftInput(true);
|
||||
}
|
||||
}
|
||||
},
|
||||
new Response.ErrorListener() {
|
||||
@Override
|
||||
public void onErrorResponse(VolleyError error) {
|
||||
showNoConnection(true);
|
||||
}
|
||||
});
|
||||
AppController.addToRequestQueue(request);
|
||||
}
|
||||
|
||||
private void getNewsViews() {
|
||||
RetrofitManager.getData()
|
||||
.getNewsViews(newsId)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Action1<List<ViewsEntity>>() {
|
||||
@Override
|
||||
public void call(List<ViewsEntity> viewsEntities) {
|
||||
if (viewsEntities.size() >0) {
|
||||
mConcernEntity.setViews(viewsEntities.get(0).getViews());
|
||||
adapter.notifyItemChanged(0);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private TextWatcher watcher = new TextWatcher() {
|
||||
@ -177,11 +263,16 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
};
|
||||
|
||||
|
||||
@OnClick(R.id.message_detail_comment_hint)
|
||||
@OnClick(R.id.message_detail_comment_hint_rl)
|
||||
public void OnHintClikListener() {
|
||||
setSoftInput(true);
|
||||
}
|
||||
|
||||
@OnClick(R.id.reuse_no_connection)
|
||||
public void OnConnectionClikListener() {
|
||||
showNoConnection(false);
|
||||
}
|
||||
|
||||
@OnTouch(R.id.message_detail_rv)
|
||||
public boolean OnRecyclerTouchListener() {
|
||||
if (mMessageDetailCommentRl.getVisibility() == View.VISIBLE) {
|
||||
@ -208,7 +299,9 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
final String newsId = adapter.getNewsId();
|
||||
if (newsId == null) {
|
||||
newsId = mConcernEntity.getId();
|
||||
}
|
||||
PostCommentUtils.addCommentData(Config.COMMENT_HOST + "article/" + newsId + "/comment"
|
||||
, jsonObject.toString(), MessageDetailActivity.this, new PostCommentUtils.PostCommentListener() {
|
||||
@Override
|
||||
@ -232,19 +325,26 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
cacheObject.put("user", cacheUser);
|
||||
|
||||
CommentEntity commentEntity = new Gson().fromJson(cacheObject.toString(), CommentEntity.class);
|
||||
adapter.addNormalComment(commentEntity);
|
||||
if (mConcernEntity != null) {
|
||||
adapter.addNormalComment(commentEntity);
|
||||
}
|
||||
|
||||
modifyNewsCommentVolleyCache(0, cacheObject, newsId);
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
adapter.notifyItemInserted(adapter.getHotCommentListSize() + 2);
|
||||
if (mConcernEntity != null) {
|
||||
// 完成评论操作,添加评论数
|
||||
adapter.addCommentCount();
|
||||
//修改评论缓存
|
||||
CommentManager.updateOkhttpCache(newsId);
|
||||
adapter.notifyItemInserted(adapter.getHotCommentListSize() + 2);
|
||||
adapter.notifyItemChanged(adapter.getItemCount() - 1); //刷新脚布局高度
|
||||
} else {
|
||||
showNoConnection(false);
|
||||
}
|
||||
|
||||
// 完成评论操作,添加评论数
|
||||
adapter.addCommentCount();
|
||||
//修改评论缓存
|
||||
CommentManager.updateOkhttpCache(newsId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -252,6 +352,7 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
mSendingDialog.dismiss();
|
||||
|
||||
if (error.networkResponse == null) {
|
||||
Utils.toast(MessageDetailActivity.this, "提交失败,请检查网络设置");
|
||||
Utils.log("评论错误返回为空======");
|
||||
return;
|
||||
}
|
||||
@ -308,13 +409,30 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
}
|
||||
}
|
||||
|
||||
private void showNoConnection(boolean isShow) {
|
||||
if (isShow) {
|
||||
mNoConnection.setVisibility(View.VISIBLE);
|
||||
mMessageDetailRv.setVisibility(View.GONE);
|
||||
} else {
|
||||
mNoConnection.setVisibility(View.GONE);
|
||||
mMessageDetailRv.setVisibility(View.VISIBLE);
|
||||
|
||||
if (newsId != null ) {
|
||||
getConcernDigest();
|
||||
}
|
||||
if (mMessageDetailCommentRl.getVisibility() == View.VISIBLE) {
|
||||
setSoftInput(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//软键盘控制
|
||||
private void setSoftInput(boolean isShow) {
|
||||
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
if (isShow){
|
||||
imm.showSoftInputFromInputMethod(mMessageDetailEt.getWindowToken(), 0);
|
||||
imm.toggleSoftInputFromWindow(mMessageDetailEt.getWindowToken(), 0, InputMethodManager.HIDE_NOT_ALWAYS);
|
||||
mMessageDetailCommentHint.setVisibility(View.GONE);
|
||||
mMessageDetailCommentHintRl.setVisibility(View.GONE);
|
||||
mMessageDetailLine.setVisibility(View.GONE);
|
||||
mMessageDetailCommentRl.setVisibility(View.VISIBLE);
|
||||
mMessageDetailUserRl.setVisibility(View.VISIBLE);
|
||||
@ -324,7 +442,7 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
|
||||
|
||||
} else {
|
||||
imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
|
||||
mMessageDetailCommentHint.setVisibility(View.VISIBLE);
|
||||
mMessageDetailCommentHintRl.setVisibility(View.VISIBLE);
|
||||
mMessageDetailLine.setVisibility(View.VISIBLE);
|
||||
mMessageDetailCommentRl.setVisibility(View.GONE);
|
||||
mMessageDetailUserRl.setVisibility(View.GONE);
|
||||
|
||||
Reference in New Issue
Block a user