From 68f8bee1461dfdc7019bae63206d3ea347fa0eb7 Mon Sep 17 00:00:00 2001 From: khy <18814188563@163.com> Date: Wed, 30 Nov 2016 10:29:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E7=AB=A0=E8=AF=A6=E6=83=85=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=AF=84=E8=AE=BA=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/constant/Config.java | 2 +- .../java/com/gh/gamecenter/MainActivity.java | 15 +- .../gh/gamecenter/MessageDetailActivity.java | 158 +++++++++++++++--- .../com/gh/gamecenter/NewsDetailActivity.java | 2 +- .../java/com/gh/gamecenter/WebActivity.java | 77 +++++++-- .../adapter/MessageDetailAdapter.java | 84 ++++++---- .../download/GameUpdateFragmentAdapter.java | 8 +- .../com/gh/gamecenter/news/News1Fragment.java | 24 ++- .../gamecenter/news/News1FragmentAdapter.java | 1 + .../newsdetail/NewsDetailAdapter.java | 67 +++++++- .../NewsDetailCommentViewHolder.java | 23 +++ app/src/main/res/drawable-hdpi/et_icon.png | Bin 0 -> 687 bytes .../main/res/drawable/comment_border_bg.xml | 13 ++ .../res/layout/activity_messagedetail.xml | 47 ++++-- app/src/main/res/layout/activity_web.xml | 36 +++- app/src/main/res/layout/comment_item.xml | 3 +- .../res/layout/newsdetail_item_comment.xml | 23 +++ 17 files changed, 487 insertions(+), 96 deletions(-) create mode 100644 app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailCommentViewHolder.java create mode 100644 app/src/main/res/drawable-hdpi/et_icon.png create mode 100644 app/src/main/res/drawable/comment_border_bg.xml create mode 100644 app/src/main/res/layout/newsdetail_item_comment.xml diff --git a/app/src/main/java/com/gh/common/constant/Config.java b/app/src/main/java/com/gh/common/constant/Config.java index df138802ac..05b2e920be 100644 --- a/app/src/main/java/com/gh/common/constant/Config.java +++ b/app/src/main/java/com/gh/common/constant/Config.java @@ -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/"; diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 25819f9efd..cc26650d2b 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -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 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 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; } diff --git a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java index 7f865f6dac..f2059baa2e 100644 --- a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java @@ -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() { + @Override + public void onResponse(JSONObject response) { + Type listType = new TypeToken() {}.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>() { + @Override + public void call(List 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); diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index ed2cb4307e..898de78f2f 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -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 kv = new HashMap<>(); kv.put("名字", adapter.getNewsDetailEntity().getTitle()); kv.put("位置", "分享"); diff --git a/app/src/main/java/com/gh/gamecenter/WebActivity.java b/app/src/main/java/com/gh/gamecenter/WebActivity.java index 2e4e4134e2..220837dc05 100644 --- a/app/src/main/java/com/gh/gamecenter/WebActivity.java +++ b/app/src/main/java/com/gh/gamecenter/WebActivity.java @@ -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>(){ + + @Override + public void onNext(List 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); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java index 31c377ac32..97b618c770 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java @@ -101,7 +101,8 @@ public class MessageDetailAdapter extends RecyclerView.Adapter(); 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 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>(){ + + @Override + public void onNext(List 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() { @Override public void onResponse(JSONArray response) { - Type listType = new TypeToken>() {}.getType(); + Type listType = new TypeToken>() { + }.getType(); Gson gson = new Gson(); List 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++) { diff --git a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailCommentViewHolder.java b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailCommentViewHolder.java new file mode 100644 index 0000000000..0dd1961e0b --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailCommentViewHolder.java @@ -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); + } +} diff --git a/app/src/main/res/drawable-hdpi/et_icon.png b/app/src/main/res/drawable-hdpi/et_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a9f368dbe9e1ac25d7087d287a6777165d2c09 GIT binary patch literal 687 zcmV;g0#N;lP)hLAQM306ofj2n;v*4cL z5zfYYXVS=ZLKeTSA#S){E}g^Wcz-;p)J~^?os3qvd8n65W37;R6~&5hm`_irmrG+w zr3M!xveu~#HW$QWd~7u_X7Wlrz19g}8utR20%VDqvL;z&fE z5|*)njJVr4j<-0Pn5x!={cm%@xb!nOj7hA=4V)1QHjNvqmrE~;Dw4ky#3Lb-lR_rD zu(26O*r@Z);9sjX73oZB#*zO%m<0zjm|YH+H!v&iS3w+F4wolzrMTaoxgvmt;qm|$ zid!vk)j0eS$I6?9!f{EZHi+((06UU7VSnt+y2PErH6jaez|yXya9md4NsIklKXw<5 zBOCBg96t;1&PgGQh2gRQw_tDl!F@tE+zOd1E(>tK(EUzhE~1)|x#O|`565vPj;)aQ z^TuTX9*pB`>RL0h(Us(dqrErDE}?4Q<2ibS{}w~>=!^4m$F&PQ5XU;6V2`DlpTk33 z$E!SXv#)~89T{F_sSioJ3{sey# V^x-<={X_r&002ovPDHLkV1l|FKIZ@c literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/comment_border_bg.xml b/app/src/main/res/drawable/comment_border_bg.xml new file mode 100644 index 0000000000..123e172cf0 --- /dev/null +++ b/app/src/main/res/drawable/comment_border_bg.xml @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_messagedetail.xml b/app/src/main/res/layout/activity_messagedetail.xml index 7c66ae056c..f2a8999e4b 100644 --- a/app/src/main/res/layout/activity_messagedetail.xml +++ b/app/src/main/res/layout/activity_messagedetail.xml @@ -18,6 +18,11 @@ android:layout_height="match_parent" android:layout_marginBottom="45dp"/> + + @@ -100,20 +105,38 @@ android:layout_width="match_parent" android:layout_height="7dp" android:background="@drawable/shadow" - android:layout_above="@+id/message_detail_comment_hint"/> + android:layout_above="@+id/message_detail_comment_hint_rl"/> - + android:background="@android:color/white"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_web.xml b/app/src/main/res/layout/activity_web.xml index 1ecf4ca6de..e34b8364b7 100644 --- a/app/src/main/res/layout/activity_web.xml +++ b/app/src/main/res/layout/activity_web.xml @@ -12,7 +12,8 @@ + android:layout_height="match_parent" + android:layout_above="@+id/news_bottom"/> - + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/comment_item.xml b/app/src/main/res/layout/comment_item.xml index 1a886567c5..0bcfaba797 100644 --- a/app/src/main/res/layout/comment_item.xml +++ b/app/src/main/res/layout/comment_item.xml @@ -28,7 +28,8 @@ android:layout_marginTop="16dp" android:layout_marginLeft="16dp" android:layout_marginRight="17dp" - fresco:roundAsCircle="true"/> + fresco:roundAsCircle="true" + style="@style/frescoStyle"/> + + + + \ No newline at end of file