Conflicts:
	app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java
This commit is contained in:
huangzhuanghua
2016-11-29 10:59:15 +08:00
58 changed files with 518 additions and 3680 deletions

View File

@ -6,6 +6,7 @@ import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -61,6 +62,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
/**
* Created by khy on 2016/11/8.
@ -72,6 +75,10 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
private ConcernEntity mConcernEntity;
private OnCommentCallBackListener mCallBackListener;
private RecyclerView mRecyclerView;
private List<CommentEntity> mHotCommentList;
private List<CommentEntity> mNormalCommentList;
@ -86,14 +93,18 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
private boolean isOver;
private boolean isLoading;
private boolean isNetworkError;
private boolean isRefreshPosition;
private static final int ITEM_TOP = 100;
private static final int ITEM_TITLE = 101;
private static final int ITEM_COMMENT = 102;
private static final int ITEM_FOOTER = 103;
public MessageDetailAdapter(MessageDetailActivity context, CommentDao commentDao) {
public MessageDetailAdapter(MessageDetailActivity context, CommentDao commentDao, RecyclerView messageDetailRv) {
this.mContext = context;
this.mRecyclerView = messageDetailRv;
mCallBackListener = context;
mVoteDao = new VoteDao(context);
mCommentDao = commentDao;
@ -106,13 +117,19 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
isOver = false;
isLoading = false;
isNetworkError = false;
isRefreshPosition = true;
mHotCommentList = new ArrayList<>();
mNormalCommentList = new ArrayList<>();
mConcernEntity = (ConcernEntity) AppController.get("ConcernEntity", true);
addHotComment(0);
if (mConcernEntity.getCommentnum() != 0) {
addHotComment(0);
} else {
notifyItemChanged(1);
mCallBackListener.showSoftInput();
}
}
private void addHotComment(int offset) {
@ -228,6 +245,16 @@ 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) {
@ -260,24 +287,41 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
}
private void initFooterViewHolder(final FooterViewHolder viewHolder) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
LinearLayout.LayoutParams params;
int height = 0;
if (mRecyclerView.getChildCount() != 1 ) {
for (int i = 0; i < mRecyclerView.getChildCount(); i++) {
if ( i != 0 ){
height = height + mRecyclerView.getChildAt(i).getHeight();
}
}
}
if (mRecyclerView.getHeight() - height < 100) {
params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
} else {
params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mRecyclerView.getHeight() - height);
}
viewHolder.itemView.setLayoutParams(params);
((LinearLayout)viewHolder.itemView).setGravity(Gravity.CENTER_HORIZONTAL);
if (!isOver) {
viewHolder.hint.setText("加载中...");
viewHolder.loading.setVisibility(View.VISIBLE);
} else if (isNetworkError || mNormalCommentList.size() == 0 && mHotCommentList.size() == 0) {
viewHolder.loading.setVisibility(View.GONE);
params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(mContext, 185));
if (isNetworkError) {
viewHolder.hint.setText("网络错误,点击重试!");
} else {
viewHolder.itemView.setLayoutParams(params);
viewHolder.itemView.setPadding(0, DisplayUtils.dip2px(mContext, 20), 0, 0);
viewHolder.hint.setText("目前还没有评论");
}
} else {
viewHolder.hint.setText("没有更多评论啦..");
if (mNormalCommentList.size() > 10) {
viewHolder.hint.setText("没有更多评论啦");
} else {
viewHolder.hint.setText("");
}
viewHolder.loading.setVisibility(View.GONE);
}
@ -397,6 +441,13 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
}
}
});
viewHolder.comment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCallBackListener.showSoftInput();
}
});
}
private void initCommentViewHolder(final CommentViewHolder holder, int position) {
@ -622,4 +673,8 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
public boolean isOver() {
return isOver;
}
public interface OnCommentCallBackListener {
void showSoftInput();
}
}