文章详情增加评论入口
This commit is contained in:
@ -6,7 +6,7 @@ import android.content.SharedPreferences;
|
||||
|
||||
public class Config {
|
||||
|
||||
public static final String HOST = "http://api.ghzhushou.com/v2d1/";
|
||||
public static final String HOST = "http://api.ghzhushou.com/v2d2/";
|
||||
public static final String USER_HOST = "http://user.ghzhushou.com/v1d0/";
|
||||
public static final String COMMENT_HOST = "http://comment.ghzhushou.com/v1d0/";
|
||||
public static final String DATA_HOST = "http://data.ghzhushou.com/";
|
||||
|
||||
@ -483,7 +483,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
}
|
||||
if (isNewFirstLaunch) {
|
||||
getPluginUpdate();
|
||||
initConcern(); // 初始化关注
|
||||
// sp.edit().putBoolean("isNewFirstLaunchV" + PackageUtils.getVersion(getApplicationContext()), false).apply();
|
||||
}
|
||||
|
||||
@ -505,6 +504,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
public void run() {
|
||||
// 注册设备
|
||||
TokenUtils.register(MainActivity.this);
|
||||
initConcern(); // 初始化关注
|
||||
}
|
||||
}.start();
|
||||
}
|
||||
@ -555,6 +555,11 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
final ArrayList<GameEntity> concernDigest = new ArrayList<>();
|
||||
|
||||
final int size = arrGameId.size();
|
||||
|
||||
if (size == 0) {
|
||||
EventBus.getDefault().post(new EBUISwitch("NewsFragment", -2)); // 没有关注
|
||||
}
|
||||
|
||||
initConcernCount = 0;
|
||||
for (String gameId : arrGameId) {
|
||||
JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(
|
||||
@ -639,6 +644,14 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
private void getInstalledListFromServer() {
|
||||
ArrayList<String> list = PackageUtils.getAllPackageName(getApplicationContext());
|
||||
if (list.isEmpty()) {
|
||||
if (isNewFirstLaunch) { // 延迟0.3s,防止页面未注册eventbus,接收消息失败
|
||||
handler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
EventBus.getDefault().post(new EBUISwitch("NewsFragment", -1)); //通知更新推荐关注小版块
|
||||
}
|
||||
}, 300);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -270,7 +270,7 @@ public class NewsDetailActivity extends DetailActivity implements OnClickListene
|
||||
public void onClick(final View v) {
|
||||
super.onClick(v);
|
||||
if (v == iv_share) {
|
||||
if (adapter != null) {
|
||||
if (adapter != null && adapter.getNewsDetailEntity() != null) {
|
||||
Map<String, Object> kv = new HashMap<>();
|
||||
kv.put("名字", adapter.getNewsDetailEntity().getTitle());
|
||||
kv.put("位置", "分享");
|
||||
|
||||
@ -11,16 +11,33 @@ import android.webkit.WebSettings;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.gh.base.BaseActivity;
|
||||
import com.gh.gamecenter.entity.CommentnumEntity;
|
||||
import com.gh.gamecenter.retrofit.RetrofitManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import rx.android.schedulers.AndroidSchedulers;
|
||||
import rx.schedulers.Schedulers;
|
||||
|
||||
/**
|
||||
* Created by khy on 2016/10/18.
|
||||
*/
|
||||
public class WebActivity extends BaseActivity {
|
||||
|
||||
private WebView news_webview;
|
||||
private ProgressBar web_progressbar;
|
||||
@BindView(R.id.news_webview) WebView webView;
|
||||
@BindView(R.id.web_progressbar) ProgressBar progressBar;
|
||||
@BindView(R.id.web_comment) TextView webComment;
|
||||
@BindView(R.id.news_bottom) RelativeLayout newsBottom;
|
||||
|
||||
private String newsId;
|
||||
private int commentNum;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@ -28,19 +45,21 @@ public class WebActivity extends BaseActivity {
|
||||
|
||||
String webUrl = getIntent().getStringExtra("url");
|
||||
String webTitle = getIntent().getStringExtra("gameName");
|
||||
newsId = getIntent().getStringExtra("newsId");
|
||||
|
||||
View contentView = View.inflate(this, R.layout.activity_web, null);
|
||||
init(contentView, webTitle);
|
||||
|
||||
news_webview.loadUrl(webUrl);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
WebSettings settings = news_webview.getSettings();
|
||||
webView.loadUrl(webUrl);
|
||||
|
||||
WebSettings settings = webView.getSettings();
|
||||
settings.setJavaScriptEnabled(true);
|
||||
settings.setSupportZoom(true);
|
||||
settings.setBuiltInZoomControls(true);
|
||||
|
||||
//用webview打开url
|
||||
news_webview.setWebViewClient(new WebViewClient(){
|
||||
webView.setWebViewClient(new WebViewClient(){
|
||||
@Override
|
||||
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||||
view.loadUrl(url);
|
||||
@ -58,7 +77,7 @@ public class WebActivity extends BaseActivity {
|
||||
});
|
||||
|
||||
// 页面里的下载跳转到自带浏览器
|
||||
news_webview.setDownloadListener(new DownloadListener() {
|
||||
webView.setDownloadListener(new DownloadListener() {
|
||||
@Override
|
||||
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
|
||||
Uri uri = Uri.parse(url);
|
||||
@ -68,26 +87,56 @@ public class WebActivity extends BaseActivity {
|
||||
});
|
||||
|
||||
//设置加载进度条
|
||||
news_webview.setWebChromeClient(new WebChromeClient(){
|
||||
webView.setWebChromeClient(new WebChromeClient(){
|
||||
@Override
|
||||
public void onProgressChanged(WebView view, int newProgress) {
|
||||
web_progressbar.setProgress(newProgress);
|
||||
progressBar.setProgress(newProgress);
|
||||
if (newProgress == 100){
|
||||
web_progressbar.setVisibility(View.GONE);
|
||||
progressBar.setVisibility(View.GONE);
|
||||
if (newsBottom.getVisibility() == View.GONE) {
|
||||
newsBottom.setVisibility(View.VISIBLE);
|
||||
}
|
||||
} else {
|
||||
if (web_progressbar.getVisibility() == View.GONE) {
|
||||
web_progressbar.setVisibility(View.VISIBLE);
|
||||
if (progressBar.getVisibility() == View.GONE) {
|
||||
progressBar.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
getNewsCommentNum();
|
||||
}
|
||||
|
||||
@OnClick(R.id.web_comment)
|
||||
public void OnCommentClickListener() {
|
||||
Intent intent = new Intent(this, MessageDetailActivity.class);
|
||||
intent.putExtra("newsId", newsId);
|
||||
intent.putExtra("commentNum", commentNum);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void getNewsCommentNum() {
|
||||
RetrofitManager.getComment()
|
||||
.getNewsCommentnum(newsId)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new com.gh.gamecenter.retrofit.Response<List<CommentnumEntity>>(){
|
||||
|
||||
@Override
|
||||
public void onNext(List<CommentnumEntity> response) {
|
||||
super.onNext(response);
|
||||
if (response.size() > 0 && response.get(0).getNum() > 0) {
|
||||
commentNum = response.get(0).getNum();
|
||||
webComment.setText("查看评论(" + response.get(0).getNum() + ")");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
if (keyCode == KeyEvent.KEYCODE_BACK && news_webview.canGoBack()) {
|
||||
news_webview.goBack();// 返回前一个页面
|
||||
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
|
||||
webView.goBack();// 返回前一个页面
|
||||
return true;
|
||||
}
|
||||
return super.onKeyDown(keyCode, event);
|
||||
|
||||
@ -101,7 +101,8 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
|
||||
private static final int ITEM_COMMENT = 102;
|
||||
private static final int ITEM_FOOTER = 103;
|
||||
|
||||
public MessageDetailAdapter(MessageDetailActivity context, CommentDao commentDao, RecyclerView messageDetailRv) {
|
||||
public MessageDetailAdapter(MessageDetailActivity context, CommentDao commentDao, RecyclerView messageDetailRv ,
|
||||
ConcernEntity concernEntity) {
|
||||
this.mContext = context;
|
||||
this.mRecyclerView = messageDetailRv;
|
||||
|
||||
@ -123,17 +124,18 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
|
||||
mHotCommentList = new ArrayList<>();
|
||||
mNormalCommentList = new ArrayList<>();
|
||||
|
||||
mConcernEntity = (ConcernEntity) AppController.get("ConcernEntity", true);
|
||||
mConcernEntity = concernEntity;
|
||||
|
||||
if (mConcernEntity.getCommentnum() != 0) {
|
||||
if (mConcernEntity != null && mConcernEntity.getCommentnum() != 0) {
|
||||
addHotComment(0);
|
||||
} else {
|
||||
notifyItemChanged(1);
|
||||
} else if (mConcernEntity != null) {
|
||||
isOver = true;
|
||||
notifyItemChanged(getItemCount() - 1);
|
||||
mCallBackListener.showSoftInput();
|
||||
}
|
||||
}
|
||||
|
||||
private void addHotComment(int offset) {
|
||||
public void addHotComment(int offset) {
|
||||
|
||||
String hotCommentUrl = Config.COMMENT_HOST + "article/" + mConcernEntity.getId() +
|
||||
"/comment?order=hot&limit=" + 10 + "&offset=" + offset;
|
||||
@ -246,16 +248,6 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
||||
if (isRefreshPosition) {
|
||||
Timer timer = new Timer(); // 延迟半秒,防止出现闪屏现象
|
||||
timer.schedule(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
mRecyclerView.smoothScrollBy(0, mConcernEntity.getItemHeight()); //定位到评论顶部
|
||||
}
|
||||
}, 500);
|
||||
isRefreshPosition = false;
|
||||
}
|
||||
if (holder instanceof NewsDigestViewHolder) {
|
||||
initNewsDigestViewHolder((NewsDigestViewHolder) holder);
|
||||
} else if (holder instanceof CommentViewHolder) {
|
||||
@ -287,36 +279,43 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
|
||||
return itemCount + 1;
|
||||
}
|
||||
|
||||
boolean isGetRvHeight = true; // 防止评论时弹出软键盘 影响RecyclerView高度
|
||||
int rvHeight;
|
||||
|
||||
private void initFooterViewHolder(final FooterViewHolder viewHolder) {
|
||||
if (isGetRvHeight) {
|
||||
rvHeight = mRecyclerView.getHeight();
|
||||
isGetRvHeight = false;
|
||||
}
|
||||
LinearLayout.LayoutParams params;
|
||||
int height = 0;
|
||||
if (mRecyclerView.getChildCount() != 1 ) {
|
||||
for (int i = 0; i < mRecyclerView.getChildCount(); i++) {
|
||||
if ( i != 0 ){
|
||||
if ( i != 0 || mRecyclerView.getChildAt(0).getHeight() < 200){
|
||||
height = height + mRecyclerView.getChildAt(i).getHeight();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mRecyclerView.getHeight() - height < 100) {
|
||||
if (rvHeight - height < 100 || (mNormalCommentList.size() + mHotCommentList.size()) * 220 > rvHeight) {
|
||||
params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
((LinearLayout)viewHolder.itemView).setGravity(Gravity.CENTER);
|
||||
} else {
|
||||
params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mRecyclerView.getHeight() - height);
|
||||
params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,rvHeight - height);
|
||||
((LinearLayout)viewHolder.itemView).setGravity(Gravity.CENTER_HORIZONTAL);
|
||||
}
|
||||
viewHolder.itemView.setLayoutParams(params);
|
||||
((LinearLayout)viewHolder.itemView).setGravity(Gravity.CENTER_HORIZONTAL);
|
||||
|
||||
if (!isOver) {
|
||||
if(isNetworkError) {
|
||||
viewHolder.loading.setVisibility(View.GONE);
|
||||
viewHolder.hint.setText("网络错误,点击重试!");
|
||||
}else if (!isOver) {
|
||||
viewHolder.hint.setText("加载中...");
|
||||
viewHolder.loading.setVisibility(View.VISIBLE);
|
||||
} else if (isNetworkError || mNormalCommentList.size() == 0 && mHotCommentList.size() == 0) {
|
||||
} else if ( mNormalCommentList.size() == 0 && mHotCommentList.size() == 0) {
|
||||
viewHolder.loading.setVisibility(View.GONE);
|
||||
if (isNetworkError) {
|
||||
viewHolder.hint.setText("网络错误,点击重试!");
|
||||
} else {
|
||||
viewHolder.itemView.setLayoutParams(params);
|
||||
viewHolder.itemView.setPadding(0, DisplayUtils.dip2px(mContext, 20), 0, 0);
|
||||
viewHolder.hint.setText("目前还没有评论");
|
||||
}
|
||||
viewHolder.itemView.setLayoutParams(params);
|
||||
viewHolder.itemView.setPadding(0, DisplayUtils.dip2px(mContext, 30), 0, 0);
|
||||
viewHolder.hint.setText("目前还没有评论");
|
||||
} else {
|
||||
if (mNormalCommentList.size() > 10) {
|
||||
viewHolder.hint.setText("没有更多评论啦");
|
||||
@ -339,7 +338,7 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
|
||||
});
|
||||
}
|
||||
|
||||
private void initNewsDigestViewHolder(NewsDigestViewHolder viewHolder) {
|
||||
private void initNewsDigestViewHolder(final NewsDigestViewHolder viewHolder) {
|
||||
((CardLinearLayout) viewHolder.itemView).setmTop(DisplayUtils.dip2px(mContext, 8));
|
||||
((CardLinearLayout) viewHolder.itemView).setmBottom(DisplayUtils.dip2px(mContext, 4));
|
||||
|
||||
@ -433,6 +432,7 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
|
||||
Intent intent = new Intent(mContext, WebActivity.class);
|
||||
intent.putExtra("url", mConcernEntity.getLink());
|
||||
intent.putExtra("gameName", mConcernEntity.getGameName());
|
||||
intent.putExtra("newsId", mConcernEntity.getId());
|
||||
mContext.startActivity(intent);
|
||||
} else {
|
||||
Intent intent = new Intent(mContext, NewsDetailActivity.class);
|
||||
@ -449,6 +449,22 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
|
||||
mCallBackListener.showSoftInput();
|
||||
}
|
||||
});
|
||||
|
||||
viewHolder.itemView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (isRefreshPosition) {
|
||||
Timer timer = new Timer(); // 延迟半秒,防止出现闪屏现象
|
||||
timer.schedule(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
mRecyclerView.smoothScrollBy(0, viewHolder.itemView.getHeight()); //定位到评论顶部
|
||||
}
|
||||
}, 300);
|
||||
isRefreshPosition = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initCommentViewHolder(final CommentViewHolder holder, int position) {
|
||||
@ -641,10 +657,6 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
|
||||
}
|
||||
}
|
||||
|
||||
public String getNewsId() {
|
||||
return mConcernEntity.getId();
|
||||
}
|
||||
|
||||
public boolean isLoading() {
|
||||
return isLoading;
|
||||
}
|
||||
@ -667,6 +679,10 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
|
||||
return index;
|
||||
}
|
||||
|
||||
public void addConcernEntity(ConcernEntity concernEntity) {
|
||||
this.mConcernEntity = concernEntity;
|
||||
}
|
||||
|
||||
public boolean isOver() {
|
||||
return isOver;
|
||||
}
|
||||
|
||||
@ -507,7 +507,13 @@ public class GameUpdateFragmentAdapter extends RecyclerView.Adapter<RecyclerView
|
||||
}
|
||||
|
||||
if (packageName != null) {
|
||||
viewHolder.gu_item_btv_update.performClick();
|
||||
// 插件跳转游戏更新页面造成闪退,可能是页面未绘制完成点击造成的闪退
|
||||
viewHolder.gu_item_btv_update.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
viewHolder.gu_item_btv_update.performClick();
|
||||
}
|
||||
});
|
||||
packageName = null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,6 +75,8 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On
|
||||
private SharedPreferences sp;
|
||||
|
||||
private boolean isNewFirstLaunch;
|
||||
private boolean isInitConcernOcer;
|
||||
private boolean isInitInstallOver;
|
||||
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
@ -208,13 +210,21 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On
|
||||
if (loadingLayout.getVisibility() == View.VISIBLE && !isNewFirstLaunch) {
|
||||
adapter.addList(0);
|
||||
}
|
||||
} else if (swith.getPosition() == -1) { // 初始化安装游戏完成 默认开启推荐版块!有关注新闻再隐藏
|
||||
refreshLayout.setRefreshing(false);
|
||||
loadingLayout.setVisibility(View.GONE);
|
||||
recyclerView.setVisibility(View.GONE);
|
||||
emptyLayout.setVisibility(View.VISIBLE);
|
||||
refreshLayout.setEnabled(false);
|
||||
initInstallGame();
|
||||
} else if (swith.getPosition() == -2 || swith.getPosition() == -1) {
|
||||
if (swith.getPosition() == -1) {
|
||||
isInitInstallOver = true;
|
||||
} else if (swith.getPosition() == -2) {
|
||||
isInitConcernOcer = true;
|
||||
}
|
||||
|
||||
if (isInitConcernOcer && isInitInstallOver) { // 没有关注且初始化安装完成,显示推荐小版块
|
||||
refreshLayout.setRefreshing(false);
|
||||
loadingLayout.setVisibility(View.GONE);
|
||||
recyclerView.setVisibility(View.GONE);
|
||||
emptyLayout.setVisibility(View.VISIBLE);
|
||||
refreshLayout.setEnabled(false);
|
||||
initInstallGame();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -598,6 +598,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.View
|
||||
Intent intent = new Intent(context, WebActivity.class);
|
||||
intent.putExtra("url", concernEntity.getLink());
|
||||
intent.putExtra("gameName", concernEntity.getGameName());
|
||||
intent.putExtra("newsId", concernEntity.getId());
|
||||
context.startActivity(intent);
|
||||
}else {
|
||||
Intent intent = new Intent(context, NewsDetailActivity.class);
|
||||
|
||||
@ -31,10 +31,12 @@ import com.gh.common.util.NewsUtils;
|
||||
import com.gh.common.util.RandomUtils;
|
||||
import com.gh.common.util.TokenUtils;
|
||||
import com.gh.common.util.Utils;
|
||||
import com.gh.gamecenter.MessageDetailActivity;
|
||||
import com.gh.gamecenter.NewsDetailActivity;
|
||||
import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.ViewImageActivity;
|
||||
import com.gh.gamecenter.entity.ApkEntity;
|
||||
import com.gh.gamecenter.entity.CommentnumEntity;
|
||||
import com.gh.gamecenter.entity.GameEntity;
|
||||
import com.gh.gamecenter.entity.NewsDetailEntity;
|
||||
import com.gh.gamecenter.entity.NewsEntity;
|
||||
@ -42,6 +44,7 @@ import com.gh.gamecenter.gamedetail.GameDetailTopViewHolder;
|
||||
import com.gh.gamecenter.listener.OnCallBackListener;
|
||||
import com.gh.gamecenter.manager.ConcernManager;
|
||||
import com.gh.gamecenter.manager.DataCollectionManager;
|
||||
import com.gh.gamecenter.retrofit.RetrofitManager;
|
||||
import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest;
|
||||
import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest;
|
||||
import com.google.gson.Gson;
|
||||
@ -56,6 +59,9 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import rx.android.schedulers.AndroidSchedulers;
|
||||
import rx.schedulers.Schedulers;
|
||||
|
||||
/**
|
||||
* Created by LGT on 2016/9/13.
|
||||
*/
|
||||
@ -74,6 +80,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
|
||||
private String type;
|
||||
private String title;
|
||||
private String entrance;
|
||||
private int commentNum;
|
||||
|
||||
public NewsDetailAdapter(NewsDetailActivity activity, String entrance) {
|
||||
this.context = activity;
|
||||
@ -83,6 +90,24 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
|
||||
concernManager = new ConcernManager(context);
|
||||
}
|
||||
|
||||
public void getNewsCommentNum() {
|
||||
RetrofitManager.getComment()
|
||||
.getNewsCommentnum(id)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new com.gh.gamecenter.retrofit.Response<List<CommentnumEntity>>(){
|
||||
|
||||
@Override
|
||||
public void onNext(List<CommentnumEntity> response) {
|
||||
super.onNext(response);
|
||||
if (response.size() > 0) {
|
||||
commentNum = response.get(0).getNum();
|
||||
notifyItemChanged(getItemCount() - 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void getNewsDetail() {
|
||||
JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(
|
||||
Config.HOST + "news/" + id + "/detail",
|
||||
@ -120,7 +145,8 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
|
||||
new Response.Listener<JSONArray>() {
|
||||
@Override
|
||||
public void onResponse(JSONArray response) {
|
||||
Type listType = new TypeToken<ArrayList<NewsEntity>>() {}.getType();
|
||||
Type listType = new TypeToken<ArrayList<NewsEntity>>() {
|
||||
}.getType();
|
||||
Gson gson = new Gson();
|
||||
List<NewsEntity> list = gson.fromJson(response.toString(), listType);
|
||||
// 去除与当前文章重复的文章
|
||||
@ -140,8 +166,16 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
|
||||
newsDetailEntity.setMore(more);
|
||||
notifyItemInserted(getItemCount() - 1);
|
||||
}
|
||||
|
||||
getNewsCommentNum();
|
||||
}
|
||||
}, null);
|
||||
},
|
||||
new Response.ErrorListener() {
|
||||
@Override
|
||||
public void onErrorResponse(VolleyError error) {
|
||||
getNewsCommentNum();
|
||||
}
|
||||
});
|
||||
AppController.addToRequestQueue(request, NewsDetailActivity.TAG);
|
||||
}
|
||||
|
||||
@ -154,6 +188,9 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
|
||||
if (gameEntity != null) {
|
||||
count++;
|
||||
}
|
||||
if (gameEntity != null && gameEntity.getId() != null && !gameEntity.getId().isEmpty()){
|
||||
count++;
|
||||
}
|
||||
if (newsDetailEntity.getMore() != null && newsDetailEntity.getMore().size() != 0) {
|
||||
count++;
|
||||
}
|
||||
@ -162,6 +199,10 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
if (position == getItemCount() -1 && gameEntity != null && gameEntity.getId() != null
|
||||
&& !gameEntity.getId().isEmpty()) {
|
||||
return 100;
|
||||
}
|
||||
if (gameEntity != null && position == 1) {
|
||||
return 1;
|
||||
} else if (gameEntity == null && position == 1) {
|
||||
@ -184,6 +225,10 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(
|
||||
R.layout.newsdetail_item_news_more, parent, false);
|
||||
return new NewsDetailNewsMoreViewHolder(view);
|
||||
} else if (viewType == 100){
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(
|
||||
R.layout.newsdetail_item_comment, parent, false);
|
||||
return new NewsDetailCommentViewHolder(view);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -196,9 +241,27 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
|
||||
initGameDetailTopViewHolder((GameDetailTopViewHolder) holder);
|
||||
} else if (holder instanceof NewsDetailNewsMoreViewHolder) {
|
||||
initNewsDetailNewsMoreViewHolder((NewsDetailNewsMoreViewHolder) holder);
|
||||
} else if (holder instanceof NewsDetailCommentViewHolder) {
|
||||
initNewsDetailNewsCommentViewHolder((NewsDetailCommentViewHolder) holder);
|
||||
}
|
||||
}
|
||||
|
||||
private void initNewsDetailNewsCommentViewHolder(NewsDetailCommentViewHolder holder) {
|
||||
if (commentNum > 0) {
|
||||
holder.commentTv.setText("查看评论(" + commentNum + ")");
|
||||
}
|
||||
|
||||
holder.commentTv.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(context, MessageDetailActivity.class);
|
||||
intent.putExtra("newsId", id);
|
||||
intent.putExtra("commentNum", commentNum);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initNewsDetailNewsMoreViewHolder(final NewsDetailNewsMoreViewHolder viewHolder) {
|
||||
if (viewHolder.newsdetail_item_ll_news_more.getTag() == null) {
|
||||
for (int i = 0; i < newsDetailEntity.getMore().size(); i++) {
|
||||
|
||||
@ -0,0 +1,23 @@
|
||||
package com.gh.gamecenter.newsdetail;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.gh.gamecenter.R;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
/**
|
||||
* Created by khy on 2016/11/28.
|
||||
*/
|
||||
public class NewsDetailCommentViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
@BindView(R.id.newsdetail_item_comment) public TextView commentTv;
|
||||
|
||||
public NewsDetailCommentViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
ButterKnife.bind(this, itemView);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user