Skip to content

Commit 057ecd3

Browse files
committed
修复闪存BUG;
修复关注信息获取错误问题;
1 parent 4a7d683 commit 057ecd3

20 files changed

+353
-99
lines changed

app/src/main/java/com/rae/cnblogs/activity/MomentMessageActivity.java

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
2020
super.onCreate(savedInstanceState);
2121
setContentView(R.layout.activity_moment_message);
2222
showHomeAsUp();
23+
// AppRoute.jumpToLogin(this);
2324
mFragment = new MomentMessageFragment();
2425
getSupportFragmentManager().beginTransaction()
2526
.add(R.id.content, mFragment)

app/src/main/java/com/rae/cnblogs/adapter/MomentAdapter.java

+19-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.rae.cnblogs.adapter;
22

3+
import android.app.Activity;
34
import android.support.v7.widget.GridLayoutManager;
45
import android.text.TextUtils;
56
import android.view.LayoutInflater;
67
import android.view.View;
78
import android.view.ViewGroup;
89

10+
import com.rae.cnblogs.AppRoute;
911
import com.rae.cnblogs.R;
1012
import com.rae.cnblogs.RaeImageLoader;
1113
import com.rae.cnblogs.model.ItemLoadingViewHolder;
@@ -102,7 +104,7 @@ public void onBindViewHolder(SimpleViewHolder viewHolder, int position, MomentBe
102104

103105
MomentHolder holder = (MomentHolder) viewHolder;
104106
int imageCount = Rx.getCount(m.getImageList());
105-
holder.mRecyclerView.setVisibility(imageCount > 1 ? View.GONE : View.VISIBLE);
107+
holder.mRecyclerView.setVisibility(imageCount > 1 ? View.VISIBLE : View.GONE);
106108

107109
if (imageCount > 1) {
108110
int spanCount = imageCount == 4 || imageCount == 2 ? 2 : 3;
@@ -121,7 +123,9 @@ public void onBindViewHolder(SimpleViewHolder viewHolder, int position, MomentBe
121123

122124
holder.thumbView.setVisibility(imageCount == 1 ? View.VISIBLE : View.GONE);
123125
if (imageCount == 1) {
124-
RaeImageLoader.displayHeaderImage(m.getImageList().get(0), holder.thumbView);
126+
String url = m.getImageList().get(0);
127+
RaeImageLoader.displayHeaderImage(url, holder.thumbView);
128+
holder.thumbView.setOnClickListener(new ItemImageClickListener(url));
125129
}
126130

127131
RaeImageLoader.displayHeaderImage(m.getAvatar(), holder.avatarView);
@@ -135,6 +139,19 @@ public void onBindViewHolder(SimpleViewHolder viewHolder, int position, MomentBe
135139
holder.commentView.setText("0".equals(m.getCommentCount()) ? "" : m.getCommentCount() + "条回复");
136140
}
137141

142+
static class ItemImageClickListener implements View.OnClickListener {
143+
private String mUrl;
144+
145+
public ItemImageClickListener(String url) {
146+
mUrl = url;
147+
}
148+
149+
@Override
150+
public void onClick(View v) {
151+
AppRoute.jumpToImagePreview((Activity) v.getContext(), mUrl);
152+
}
153+
}
154+
138155
private static class ItemDeleteClickListener implements View.OnClickListener {
139156

140157
private final WeakReference<OnDeleteClickListener> mOnDeleteClickListener;

app/src/main/java/com/rae/cnblogs/adapter/MomentDetailAdapter.java

+20-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.support.annotation.Nullable;
44
import android.support.v4.content.ContextCompat;
55
import android.support.v7.widget.GridLayoutManager;
6-
import android.support.v7.widget.LinearLayoutManager;
76
import android.text.SpannableString;
87
import android.text.Spanned;
98
import android.text.TextUtils;
@@ -31,7 +30,6 @@
3130
*/
3231
public class MomentDetailAdapter extends BaseItemAdapter<MomentCommentBean, SimpleViewHolder> {
3332

34-
3533
private static final int VIEW_TYPE_DETAIL = 10;
3634
private final MomentBean mMomentBean;
3735
private boolean mIsEmpty;
@@ -152,6 +150,14 @@ private void onBindCommentViewHolder(MomentCommentHolder holder, MomentCommentBe
152150
if (!TextUtils.isEmpty(m.getAtAuthorName())) {
153151
content.setSpan(new ForegroundColorSpan(ContextCompat.getColor(holder.itemView.getContext(), R.color.colorPrimary)), 0, m.getAtAuthorName().length() + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
154152
}
153+
if (!TextUtils.isEmpty(m.getAvatar())) {
154+
RaeImageLoader.displayHeaderImage(m.getAvatar(), holder.avatarView);
155+
}
156+
157+
View.OnClickListener onClickListener = TextUtils.isEmpty(m.getBlogApp()) ? null : new MomentAdapter.ItemBloggerClickListener(m.getBlogApp(), mOnBloggerClickListener);
158+
holder.authorView.setOnClickListener(onClickListener);
159+
holder.avatarView.setOnClickListener(onClickListener);
160+
holder.dateView.setOnClickListener(onClickListener);
155161

156162
int index = mDataList.indexOf(m);
157163
holder.titleLayout.setVisibility(index == 0 ? View.VISIBLE : View.GONE);
@@ -171,12 +177,22 @@ private void onBindDetailInfoViewHolder(MomentHolder holder, MomentBean m) {
171177

172178
int imageCount = Rx.getCount(m.getImageList());
173179
if (imageCount == 1) {
174-
holder.mRecyclerView.setLayoutManager(new LinearLayoutManager(holder.itemView.getContext()));
180+
holder.mRecyclerView.setVisibility(View.INVISIBLE);
181+
holder.mRecyclerView.removeAllViews();
175182
} else {
176183
int spanCount = imageCount == 4 || imageCount == 2 ? 2 : 3;
184+
holder.mRecyclerView.setVisibility(View.VISIBLE);
177185
holder.mRecyclerView.setLayoutManager(new GridLayoutManager(holder.itemView.getContext(), spanCount));
178186
}
179187

188+
holder.thumbView.setVisibility(imageCount == 1 ? View.VISIBLE : View.GONE);
189+
if (imageCount == 1) {
190+
String url = m.getImageList().get(0);
191+
RaeImageLoader.displayHeaderImage(url, holder.thumbView);
192+
holder.thumbView.setOnClickListener(new MomentAdapter.ItemImageClickListener(url));
193+
}
194+
195+
180196
View.OnClickListener onClickListener = TextUtils.isEmpty(m.getBlogApp()) ? null : new MomentAdapter.ItemBloggerClickListener(m.getBlogApp(), mOnBloggerClickListener);
181197
holder.authorView.setOnClickListener(onClickListener);
182198
holder.avatarView.setOnClickListener(onClickListener);
@@ -188,6 +204,7 @@ private void onBindDetailInfoViewHolder(MomentHolder holder, MomentBean m) {
188204
holder.dateView.setText(m.getPostTime());
189205
holder.summaryView.setText(m.getContent());
190206
holder.commentView.setText(m.getCommentCount());
207+
holder.androidTagView.setVisibility(m.isAndroidClient() ? View.VISIBLE : View.GONE);
191208
}
192209

193210
/**

app/src/main/java/com/rae/cnblogs/dialog/impl/EditCommentDialog.java

+1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ public void show() {
9393
dismissLoading();
9494
mReferenceView.setVisibility(View.GONE);
9595
mBodyView.setText("");
96+
mBodyView.setHint(R.string.edit_comment_hint);
9697
}
9798

9899
public void show(BlogCommentBean comment) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.rae.cnblogs.dialog.impl;
2+
3+
import android.content.Context;
4+
import android.view.Gravity;
5+
import android.view.WindowManager;
6+
7+
import com.rae.cnblogs.R;
8+
import com.rae.cnblogs.model.MenuDialogItem;
9+
10+
/**
11+
* 删除对话框
12+
* Created by ChenRui on 2017/11/6 0006 23:34.
13+
*/
14+
public class MenuDeleteDialog extends MenuDialog implements MenuDialog.OnMenuItemClickListener {
15+
16+
public interface onDeleteClickListener {
17+
void onMenuDeleteClicked();
18+
}
19+
20+
onDeleteClickListener mOnDeleteClickListener;
21+
22+
public MenuDeleteDialog(Context context) {
23+
super(context);
24+
addDeleteItem(getContext().getString(R.string.delete));
25+
addItem(getContext().getString(R.string.cancel));
26+
27+
setOnMenuItemClickListener(this);
28+
}
29+
30+
@Override
31+
public void onDetachedFromWindow() {
32+
super.onDetachedFromWindow();
33+
}
34+
35+
36+
public void setOnDeleteClickListener(onDeleteClickListener onDeleteClickListener) {
37+
mOnDeleteClickListener = onDeleteClickListener;
38+
}
39+
40+
@Override
41+
public void onMenuItemClick(MenuDialog dialog, MenuDialogItem item) {
42+
if (mOnDeleteClickListener != null && item.getName().equalsIgnoreCase(getContext().getString(R.string.delete))) {
43+
mOnDeleteClickListener.onMenuDeleteClicked();
44+
}
45+
}
46+
47+
48+
}

app/src/main/java/com/rae/cnblogs/dialog/impl/MenuDialog.java

+28-14
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package com.rae.cnblogs.dialog.impl;
22

33
import android.content.Context;
4-
import android.graphics.Color;
5-
import android.graphics.drawable.ColorDrawable;
6-
import android.graphics.drawable.InsetDrawable;
4+
import android.os.Build;
75
import android.support.v4.content.ContextCompat;
86
import android.support.v7.widget.LinearLayoutManager;
97
import android.support.v7.widget.RecyclerView;
@@ -42,17 +40,15 @@ public MenuDialog(Context context) {
4240
super(context);
4341
setContentView(R.layout.dialog_blog_menu);
4442

45-
WindowManager.LayoutParams attr = getWindow().getAttributes();
46-
attr.width = WindowManager.LayoutParams.MATCH_PARENT;
47-
attr.height = WindowManager.LayoutParams.WRAP_CONTENT;
48-
attr.gravity = Gravity.START | Gravity.END;
49-
getWindow().setAttributes(attr);
50-
getWindow().setDimAmount(0.5f);
51-
52-
53-
int margin = (int) getContext().getResources().getDimension(R.dimen.default_dialog_margin);
54-
InsetDrawable drawable = new InsetDrawable(new ColorDrawable(Color.TRANSPARENT), margin, 0, margin, 0);
55-
getWindow().setBackgroundDrawable(drawable);
43+
if (getWindow() != null) {
44+
getWindow().setDimAmount(0.5f);
45+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
46+
getWindow().setElevation(0);
47+
}
48+
// int margin = (int) getContext().getResources().getDimension(R.dimen.default_dialog_margin);
49+
// InsetDrawable drawable = new InsetDrawable(new ColorDrawable(Color.TRANSPARENT), margin, 0, margin, 0);
50+
// getWindow().setBackgroundDrawable(drawable);
51+
}
5652

5753

5854
ButterKnife.bind(this);
@@ -61,6 +57,17 @@ public MenuDialog(Context context) {
6157
mRecyclerView.setLayoutManager(new LinearLayoutManager(context));
6258
}
6359

60+
@Override
61+
public void show() {
62+
super.show();
63+
if (getWindow() != null) {
64+
WindowManager.LayoutParams attr = getWindow().getAttributes();
65+
attr.width = WindowManager.LayoutParams.MATCH_PARENT;
66+
attr.height = WindowManager.LayoutParams.WRAP_CONTENT;
67+
attr.gravity = Gravity.START | Gravity.END | Gravity.BOTTOM;
68+
getWindow().setAttributes(attr);
69+
}
70+
}
6471

6572
public void addItem(String name) {
6673
mAdapter.addItem(name);
@@ -115,6 +122,13 @@ public void onClick(View v) {
115122
dismiss();
116123
}
117124
});
125+
126+
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) holder.itemView.getLayoutParams();
127+
if (position == getItemCount() - 1) {
128+
params.topMargin = 45;
129+
} else {
130+
params.topMargin = 0;
131+
}
118132
}
119133

120134
@Override

app/src/main/java/com/rae/cnblogs/fragment/MomentDetailFragment.java

+33-3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.rae.cnblogs.adapter.MomentAdapter;
1717
import com.rae.cnblogs.adapter.MomentDetailAdapter;
1818
import com.rae.cnblogs.dialog.impl.EditCommentDialog;
19+
import com.rae.cnblogs.dialog.impl.MenuDeleteDialog;
1920
import com.rae.cnblogs.model.MomentHolder;
2021
import com.rae.cnblogs.presenter.CnblogsPresenterFactory;
2122
import com.rae.cnblogs.presenter.IMomentDetailContract;
@@ -53,6 +54,7 @@ public class MomentDetailFragment extends BaseFragment implements IMomentDetailC
5354
private IMomentDetailContract.Presenter mPresenter;
5455

5556
private EditCommentDialog mEditCommentDialog;
57+
private MenuDeleteDialog mDeleteDialog;
5658
private final View.OnClickListener mOnFollowClickListener = new View.OnClickListener() {
5759
@Override
5860
public void onClick(View v) {
@@ -122,6 +124,16 @@ private void performPostComment(String content, MomentCommentBean commentBean) {
122124
}
123125
});
124126

127+
mDeleteDialog = new MenuDeleteDialog(this.getContext());
128+
mDeleteDialog.setOnDeleteClickListener(new MenuDeleteDialog.onDeleteClickListener() {
129+
@Override
130+
public void onMenuDeleteClicked() {
131+
// 执行删除
132+
AppUI.loading(getContext(), "正在删除");
133+
mPresenter.deleteComment(mDeleteDialog.getTag().toString());
134+
}
135+
});
136+
125137
mPlaceholderView.dismiss();
126138

127139
mAdapter = new MomentDetailAdapter(mData);
@@ -145,7 +157,16 @@ public void onBloggerClick(String blogApp) {
145157
mAdapter.setOnItemClickListener(new BaseItemAdapter.onItemClickListener<MomentCommentBean>() {
146158
@Override
147159
public void onItemClick(MomentCommentBean item) {
148-
if (item != null) {
160+
if (item == null) {
161+
AppUI.failed(getContext(), "数据为空");
162+
return;
163+
}
164+
165+
// 如果是自己的话就弹出删除
166+
if (UserProvider.getInstance().isLogin() && UserProvider.getInstance().getLoginUserInfo().getBlogApp().equals(item.getBlogApp())) {
167+
mDeleteDialog.setTag(item.getId());
168+
mDeleteDialog.show();
169+
} else {
149170
mEditCommentDialog.show(item);
150171
}
151172
}
@@ -171,7 +192,9 @@ public void onLoadMore() {
171192
mAppLayout.setPtrHandler(new PtrDefaultHandler() {
172193
@Override
173194
public void onRefreshBegin(PtrFrameLayout frame) {
174-
start();
195+
if (mData != null) {
196+
mPresenter.refresh();
197+
}
175198
}
176199

177200
@Override
@@ -217,6 +240,7 @@ public void onEmptyComment(String message) {
217240

218241
@Override
219242
public void onLoadComments(List<MomentCommentBean> data, boolean hasMore) {
243+
AppUI.dismiss();
220244
mRecyclerView.loadMoreComplete();
221245
mAppLayout.refreshComplete();
222246
mAdapter.invalidate(data);
@@ -235,7 +259,7 @@ public void onPostCommentSuccess() {
235259
mEditCommentDialog.dismiss();
236260
AppUI.toastInCenter(getContext(), getString(R.string.tips_comment_success));
237261
// 重新加载
238-
start();
262+
mPresenter.refresh();
239263
}
240264

241265
@Override
@@ -277,6 +301,12 @@ public void onFollowSuccess() {
277301
}
278302
}
279303

304+
@Override
305+
public void onDeleteCommentFailed(String message) {
306+
AppUI.dismiss();
307+
AppUI.failed(getContext(), message);
308+
}
309+
280310

281311
/**
282312
* 评论

app/src/main/java/com/rae/cnblogs/model/MomentCommentHolder.java

+4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.rae.cnblogs.model;
22

33
import android.view.View;
4+
import android.widget.ImageView;
45
import android.widget.TextView;
56

67
import com.rae.cnblogs.R;
@@ -19,6 +20,9 @@ public class MomentCommentHolder extends SimpleViewHolder {
1920
@BindView(R.id.tv_blog_summary)
2021
public TextView summaryView;
2122

23+
@BindView(R.id.img_blog_avatar)
24+
public ImageView avatarView;
25+
2226
@BindView(R.id.tv_blog_date)
2327
public TextView dateView;
2428

0 commit comments

Comments
 (0)