Skip to content

Commit e21a387

Browse files
committed
解决评论列表错误问题
1 parent 33330de commit e21a387

File tree

12 files changed

+90
-68
lines changed

12 files changed

+90
-68
lines changed

app/src/main/java/com/rae/cnblogs/CnblogsApplication.java

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
import com.rae.cnblogs.sdk.db.DbCnblogs;
1010
import com.rae.cnblogs.sdk.db.DbFactory;
1111
import com.rae.swift.session.SessionManager;
12+
import com.squareup.leakcanary.LeakCanary;
1213
import com.tencent.bugly.Bugly;
1314
import com.tencent.tinker.loader.app.TinkerApplication;
1415
import com.tencent.tinker.loader.shareutil.ShareConstants;
15-
import com.umeng.analytics.MobclickAgent;
1616
import com.umeng.socialize.PlatformConfig;
1717
import com.umeng.socialize.UMShareAPI;
1818

@@ -22,15 +22,6 @@
2222
*/
2323
public class CnblogsApplication extends TinkerApplication {
2424

25-
// private static RefWatcher refWatcher;
26-
//
27-
//
28-
// public static void watch(Object obj) {
29-
// if (refWatcher != null) {
30-
// refWatcher.watch(obj);
31-
// }
32-
// }
33-
3425
public CnblogsApplication() {
3526
super(ShareConstants.TINKER_ENABLE_ALL, "com.rae.cnblogs.CnblogsApplicationProxy");
3627
}
@@ -39,22 +30,17 @@ public CnblogsApplication() {
3930
public void onCreate() {
4031
super.onCreate();
4132

42-
// 启动调试
43-
MobclickAgent.setDebugMode(true);
44-
4533
// 级别较高的初始化操作
4634
DbCnblogs.init(getApplication());
4735
// 日志上报
4836
Bugly.init(getApplication(), BuildConfig.BUGLY_APP_ID, BuildConfig.DEBUG);
49-
// if (!LeakCanary.isInAnalyzerProcess(this)) {
50-
// LeakCanary.install(this);
51-
// }
37+
if (!LeakCanary.isInAnalyzerProcess(this)) {
38+
LeakCanary.install(this);
39+
}
5240

53-
// LeanCloud用户反馈初始化
41+
// LeanCloud用户反馈初始化,要在主线程总
5442
AVOSCloud.initialize(getApplication(), BuildConfig.LEAN_CLOUD_APP_ID, BuildConfig.LEAN_CLOUD_APP_KEY);
5543
FeedbackThread.getInstance();
56-
// AVOSCloud.setDebugLogEnabled(BuildConfig.DEBUG);
57-
5844

5945
// 一些要求不高的初始化操作放到线程中去操作
6046
new Thread(new Runnable() {
@@ -63,22 +49,10 @@ public void run() {
6349
UserProvider.init(getApplication());
6450
SessionManager.initWithConfig(new SessionManager.ConfigBuilder().context(getApplication()).userClass(UserInfoBean.class).build());
6551
initUmengShareConfig();
66-
67-
// if (BuildConfig.BUILD_TYPE.equals("debug") || BuildConfig.DEBUG) {
68-
// onDebugMode();
69-
// }
7052
}
7153
}).start();
7254
}
7355

74-
/**
75-
* 进入调试模式
76-
*/
77-
private void onDebugMode() {
78-
79-
}
80-
81-
8256
/**
8357
* 清除应用
8458
*/
@@ -90,7 +64,6 @@ public void clearCache() {
9064
new AppDataManager(this).clearCache();
9165
}
9266

93-
9467
/**
9568
* 友盟分享
9669
*/
@@ -101,7 +74,6 @@ private void initUmengShareConfig() {
10174
PlatformConfig.setQQZone(AppConstant.QQ_APP_ID, AppConstant.QQ_APP_SECRET);
10275
}
10376

104-
10577
public Application getApplication() {
10678
return this;
10779
}

app/src/main/java/com/rae/cnblogs/RxObservable.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ private static void put(@NonNull Disposable disposable, String tag) {
5151
disposables = new ArrayList<>();
5252
sObservableDisposableList.put(tag, disposables);
5353
}
54-
Log.d("rae-rx", "添加标签:" + tag + "; 大小:" + sObservableDisposableList.get(tag).size());
54+
// Log.d("rae-rx", "添加标签:" + tag + "; 大小:" + sObservableDisposableList.get(tag).size());
5555
sObservableDisposableList.get(tag).add(disposable);
5656
}
5757

@@ -81,7 +81,7 @@ public static void dispose() {
8181
*/
8282
public static void dispose(String tag) {
8383
try {
84-
Log.w("rae-rx", "释放标签:" + tag);
84+
// Log.w("rae-rx", "释放标签:" + tag);
8585
if (TextUtils.isEmpty(tag) || !sObservableDisposableList.containsKey(tag)) {
8686
return;
8787
}

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

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import com.rae.cnblogs.AppRoute;
1616
import com.rae.cnblogs.AppUI;
17+
import com.rae.cnblogs.GlideApp;
1718
import com.rae.cnblogs.R;
1819
import com.rae.cnblogs.RaeImageLoader;
1920
import com.rae.cnblogs.fragment.BlogListFragment;
@@ -140,18 +141,13 @@ public void run() {
140141
mBloggerPresenter = CnblogsPresenterFactory.getBloggerPresenter(this, this);
141142
mBloggerPresenter.start();
142143

143-
144-
// 如果是自己,则隐藏关注按钮
145-
if (UserProvider.getInstance().isLogin() && TextUtils.equals(mBlogApp, UserProvider.getInstance().getLoginUserInfo().getBlogApp())) {
146-
mFollowView.setVisibility(View.INVISIBLE);
147-
}
148144
}
149145

150-
151-
// @Override
152-
// protected int getHomeAsUpIndicator() {
153-
// return R.drawable.ic_back_white;
154-
// }
146+
@Override
147+
protected void onDestroy() {
148+
mBloggerPresenter.destroy();
149+
super.onDestroy();
150+
}
155151

156152
@Override
157153
public void onLoadBloggerInfo(FriendsInfoBean userInfo) {
@@ -160,9 +156,26 @@ public void onLoadBloggerInfo(FriendsInfoBean userInfo) {
160156
mFollowLayout.setClickable(true);
161157
mFollowView.setEnabled(true);
162158

163-
RaeImageLoader.displayHeaderImage(userInfo.getAvatar(), mAvatarView);
159+
160+
// 如果是自己,则隐藏关注按钮
161+
if (UserProvider.getInstance().isLogin() && TextUtils.equals(mBlogApp, UserProvider.getInstance().getLoginUserInfo().getBlogApp())) {
162+
mFollowView.setVisibility(View.INVISIBLE);
163+
} else {
164+
mFollowView.setVisibility(View.VISIBLE);
165+
}
166+
167+
GlideApp.with(this)
168+
.load(userInfo.getAvatar())
169+
.placeholder(R.drawable.boy)
170+
.into(mAvatarView);
171+
164172
if (!TextUtils.isEmpty(userInfo.getAvatar())) {
165-
// mBackgroundView.setBackgroundColor(ContextCompat.getColor(this, R.color.dividerColor));
173+
174+
GlideApp.with(this)
175+
.load(userInfo.getAvatar())
176+
.placeholder(R.drawable.account_top_bg)
177+
.into(mBackgroundView);
178+
166179
RaeImageLoader.displayImage(userInfo.getAvatar(), mBackgroundView);
167180
}
168181

@@ -208,6 +221,7 @@ public void onNotLogin() {
208221
*/
209222
@OnClick(R.id.layout_account_fans)
210223
public void onFansClick() {
224+
if (mUserInfo == null) return;
211225
AppRoute.jumpToFans(this.getContext(), mUserInfo.getDisplayName(), mUserInfo.getUserId());
212226
}
213227

@@ -217,11 +231,14 @@ public void onFansClick() {
217231
*/
218232
@OnClick(R.id.layout_account_follow)
219233
public void onFollowClick() {
234+
if (mUserInfo == null) return;
220235
AppRoute.jumpToFollow(this.getContext(), mUserInfo.getDisplayName(), mUserInfo.getUserId());
221236
}
222237

223238
@OnClick(R.id.btn_blogger_follow)
224239
public void onFollowButtonClick() {
240+
if (mUserInfo == null) return;
241+
225242
AppUI.loading(this);
226243
mBloggerPresenter.doFollow();
227244
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ public void onServiceDisconnected(ComponentName name) {
8383

8484
}
8585
};
86-
8786
// 绑定服务
8887
bindService(new Intent(this, CnblogsService.class), mServiceConnection, BIND_AUTO_CREATE);
8988

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.support.v4.app.Fragment;
44
import android.support.v4.app.FragmentManager;
55
import android.support.v4.app.FragmentStatePagerAdapter;
6+
import android.support.v4.view.PagerAdapter;
67
import android.util.SparseArray;
78
import android.view.View;
89
import android.view.ViewGroup;
@@ -35,6 +36,10 @@ public Fragment getItem(int position) {
3536
return fragment;
3637
}
3738

39+
@Override
40+
public int getItemPosition(Object object) {
41+
return PagerAdapter.POSITION_NONE;
42+
}
3843

3944
@Override
4045
public Object instantiateItem(ViewGroup container, int position) {

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

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import android.os.Bundle;
66
import android.support.annotation.Nullable;
77
import android.support.design.widget.TabLayout;
8-
import android.support.v4.app.FragmentTransaction;
98
import android.support.v4.view.ViewPager;
109
import android.view.View;
1110

@@ -94,6 +93,7 @@ public void onCategoryClick(View view) {
9493
public void onLoadCategory(List<CategoryBean> data) {
9594

9695
mCategoryBeanList = data;
96+
int count = mAdapter == null ? 0 : mAdapter.getCount();
9797

9898
if (mAdapter == null) {
9999
mAdapter = new BlogListAdapter(getChildFragmentManager(), data);
@@ -102,17 +102,29 @@ public void onLoadCategory(List<CategoryBean> data) {
102102
} else {
103103
mAdapter.updateDataSet(data);
104104
}
105-
if (mPosition > 1 && mPosition == mViewPager.getCurrentItem()) {
106-
// 非首页、推荐,排序后还在当前页,需要重新刷新
107-
BlogListFragment fragment = mAdapter.getFragment(mPosition);
108-
if (fragment != null) {
109-
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
110-
transaction.detach(fragment);
111-
fragment.refreshCategory(data.get(mPosition));
112-
transaction.attach(fragment);
113-
transaction.commit();
114-
}
115-
} else {
105+
if (data.size() < count) {
106+
mViewPager.setCurrentItem(0);
107+
}
108+
// else if (mPosition > 1 && mPosition == mViewPager.getCurrentItem()) {
109+
// // 非首页、推荐,排序后还在当前页,需要重新刷新
110+
// BlogListFragment fragment = mAdapter.getFragment(mPosition);
111+
// if (fragment != null) {
112+
// m
113+
//
114+
// // 先移除
115+
// FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
116+
// transaction.detach(fragment);
117+
// transaction.remove(fragment);
118+
// transaction.commit();
119+
//
120+
// transaction = getChildFragmentManager().beginTransaction();
121+
//
122+
//// fragment.refreshCategory(data.get(mPosition));
123+
// transaction.re(fragment);
124+
// transaction.commit();
125+
// }
126+
// }
127+
else {
116128
mViewPager.setCurrentItem(mPosition);
117129
}
118130
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public CategoriesViewHolder createViewHolder(View view, FlexibleAdapter flexible
5252
public void bindViewHolder(FlexibleAdapter flexibleAdapter, CategoriesViewHolder holder, int i, List list) {
5353
holder.setTitle(mCategory.getName());
5454
holder.setBackgroundResource(isDraggable() ? R.drawable.bg_category : R.drawable.bg_category_lock);
55-
holder.setTitleColor(isDraggable() ? R.color.ph2 : R.color.colorPrimary);
55+
holder.setTitleColor(isDraggable() ? R.color.ph2 : R.color.ph3); // 拖动颜色
5656
Log.i("rae", "bindViewHolder --> " + i);
5757

5858
}

app/src/main/res/layout/fm_blogger_info.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
android:layout_height="70dp"
7373
android:layout_centerInParent="true"
7474
android:scaleType="centerCrop"
75-
android:src="@drawable/ic_default_user_avatar"
75+
android:src="@drawable/boy"
7676
app:riv_corner_radius="70dp"/>
7777

7878
</RelativeLayout>
@@ -239,6 +239,7 @@
239239
android:layout_marginRight="12dp"
240240
android:background="@drawable/bg_btn_follow_drak"
241241
android:text="@string/following"
242+
android:visibility="gone"
242243
android:textColor="@color/ph1"
243244
android:textSize="@dimen/h3"/>
244245

app/src/main/res/values/styles.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<item name="colorAccent">@color/colorPrimaryDark</item>
99
<item name="actionBarDivider">@color/transparent</item>
1010
<item name="actionBarStyle">@style/AppActionBar</item>
11+
<item name="toolbarNavigationButtonStyle">@style/AppToolbarNavigationButtonStyle</item>
1112
<item name="windowNoTitle">true</item>
1213
<item name="windowActionBar">false</item>
1314
<item name="buttonStyle">@style/AppButton</item>
@@ -43,6 +44,11 @@
4344

4445
</style>
4546

47+
<style name="AppToolbarNavigationButtonStyle" parent="Base.Widget.AppCompat.Toolbar.Button.Navigation">
48+
<item name="background">@android:color/transparent</item>
49+
<item name="android:background">@android:color/transparent</item>
50+
</style>
51+
4652
<style name="TabTextAppearance" parent="TextAppearance.AppCompat.Medium.Inverse">
4753
<item name="android:textSize">16sp</item>
4854
</style>

sdk/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ android {
44
compileSdkVersion rootProject.ext.compileSdkVersion
55
buildToolsVersion rootProject.ext.buildToolsVersion
66

7+
defaultPublishConfig "debug"
8+
79
defaultConfig {
810
minSdkVersion rootProject.ext.minSdkVersion
911
targetSdkVersion rootProject.ext.targetSdkVersion

sdk/src/main/java/com/rae/cnblogs/sdk/CnblogsApiProvider.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,14 @@ public abstract class CnblogsApiProvider {
3232

3333
protected CnblogsApiProvider(Context context) {
3434
mContext = context;
35-
OkHttpClient client = new OkHttpExtBuilder()
35+
OkHttpExtBuilder builder = new OkHttpExtBuilder();
36+
37+
if (BuildConfig.DEBUG) {
38+
builder.debug("CNBLOGS-API");
39+
}
40+
41+
OkHttpClient client = builder
3642
.cache(context, 5)
37-
.debug("CNBLOGS-API")
3843
.https()
3944
.cookie()
4045
.build()

sdk/src/main/java/com/rae/cnblogs/sdk/parser/BlogCommentParser.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.jsoup.select.Elements;
1515

1616
import java.util.ArrayList;
17+
import java.util.Collections;
1718
import java.util.List;
1819

1920
//import com.alibaba.fastjson.JSON;
@@ -28,21 +29,23 @@ public class BlogCommentParser implements IJsonParser<List<BlogCommentBean>> {
2829

2930
@Override
3031
public List<BlogCommentBean> parse(String json) {
32+
33+
List<BlogCommentBean> result = Collections.emptyList();
3134
if (TextUtils.isEmpty(json)) {
32-
return null;
35+
return result;
3336
}
3437
BlogCommentModel model = mGson.fromJson(json, BlogCommentModel.class);
3538
if (model == null) {
36-
return null;
39+
return result;
3740
}
3841
String html = model.getCommentsHtml();
3942
if (TextUtils.isEmpty(html)) {
40-
return null;
43+
return result;
4144
}
4245

46+
result = new ArrayList<>();
4347
// 解析XML
4448
Document document = Jsoup.parse(html);
45-
List<BlogCommentBean> result = new ArrayList<>();
4649

4750
Elements posts = document.select(".post");
4851
Elements feeds = document.select(".feedbackItem");

0 commit comments

Comments
 (0)