Skip to content

Commit 0b2a38d

Browse files
committed
完善topiclist状态保存
1 parent 66eab84 commit 0b2a38d

5 files changed

Lines changed: 79 additions & 6 deletions

File tree

diycode-app/src/main/java/com/gcssloop/diycode/activity/MainActivity.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import com.gcssloop.diycode.fragment.SitesListFragment;
4747
import com.gcssloop.diycode.fragment.TextFragment;
4848
import com.gcssloop.diycode.fragment.TopicListFragment;
49+
import com.gcssloop.diycode.utils.Config;
4950
import com.gcssloop.diycode.utils.DataCache;
5051
import com.gcssloop.diycode_sdk.api.login.event.LogoutEvent;
5152
import com.gcssloop.diycode_sdk.api.user.bean.User;
@@ -59,7 +60,9 @@
5960

6061
public class MainActivity extends BaseActivity
6162
implements NavigationView.OnNavigationItemSelectedListener {
62-
DataCache mCache;
63+
private DataCache mCache;
64+
private Config mConfig;
65+
private int mCurrentPosition = -1;
6366

6467
@Override
6568
public int getLayoutId() {
@@ -70,6 +73,7 @@ public int getLayoutId() {
7073
public void initViews(ViewHolder holder, View root) {
7174
EventBus.getDefault().register(this);
7275
mCache = new DataCache(this);
76+
mConfig = Config.getSingleInstance();
7377
initMenu(holder);
7478
initViewPager(holder);
7579
}
@@ -109,6 +113,27 @@ public CharSequence getPageTitle(int position) {
109113
return types[position];
110114
}
111115
});
116+
117+
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
118+
@Override
119+
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
120+
121+
}
122+
123+
@Override
124+
public void onPageSelected(int position) {
125+
mCurrentPosition = position;
126+
}
127+
128+
@Override
129+
public void onPageScrollStateChanged(int state) {
130+
131+
}
132+
});
133+
134+
int lastPosition = mConfig.getMainViewPagerPosition();
135+
mViewPager.setCurrentItem(lastPosition);
136+
112137
mTabLayout.setupWithViewPager(mViewPager);
113138
}
114139

@@ -282,5 +307,6 @@ public boolean onNavigationItemSelected(MenuItem item) {
282307
protected void onDestroy() {
283308
super.onDestroy();
284309
EventBus.getDefault().unregister(this);
310+
mConfig.saveMainViewPagerPosition(mCurrentPosition);
285311
}
286312
}

diycode-app/src/main/java/com/gcssloop/diycode/base/recyclerview/GcsAdapter.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import android.view.View;
3131
import android.view.ViewGroup;
3232

33+
import com.gcssloop.diycode_sdk.log.Logger;
34+
3335
import java.util.ArrayList;
3436
import java.util.List;
3537

@@ -77,7 +79,16 @@ public int getItemCount() {
7779
}
7880

7981
public void addDatas(List<T> datas) {
80-
this.mDatas.addAll(datas);
82+
// 消除重复
83+
Logger.e("清除重复数据");
84+
for (T data : datas){
85+
if (!mDatas.contains(data)){
86+
mDatas.add(data);
87+
} else {
88+
Logger.i("过滤掉一条重复数据");
89+
}
90+
}
91+
// this.mDatas.addAll(datas);
8192
notifyDataSetChanged();
8293
}
8394

diycode-app/src/main/java/com/gcssloop/diycode/fragment/TopicListFragment.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ private void initData() {
135135
mRefreshLayout.setEnabled(true);
136136
List<Topic> topics = mDataCache.getTopicsList();
137137
if (null != topics && topics.size() > 0) {
138+
// 缓存模式,取出上一次的pageIndex
139+
pageIndex = mConfig.getTopicListPageIndex();
138140
mAdapter.addDatas(topics);
139141
mFooter.setText(FOOTER_NORMAL);
140142
if (isFirstLaunch) {
@@ -284,6 +286,7 @@ public void onDestroyView() {
284286
// 保存
285287
int lastScrollY = mScrollView.getScrollY();
286288
mConfig.saveTopicListScroll(lastScrollY);
289+
mConfig.saveTopicListPageIndex(pageIndex);
287290
super.onDestroyView();
288291
}
289292
}

diycode-app/src/main/java/com/gcssloop/diycode/utils/Config.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,17 +94,38 @@ public Boolean isUseInsideBrowser() {
9494
}
9595

9696

97-
//--- 状态 -----------------------------------------------------------------------------------
97+
//--- 首页状态 -------------------------------------------------------------------------------
98+
99+
private String Key_MainViewPager_Position = "Key_MainViewPager_Position";
100+
101+
public void saveMainViewPagerPosition(Integer position) {
102+
mLruCache.put(Key_MainViewPager_Position, position);
103+
}
104+
105+
public Integer getMainViewPagerPosition() {
106+
return getData(Key_MainViewPager_Position, 0);
107+
}
108+
109+
//--- Topic状态 ------------------------------------------------------------------------------
98110

99111
private String Key_TopicList_LastScroll = "Key_TopicList_LastScroll";
100112

101-
public void saveTopicListScroll(Integer scrollY) {
102-
mLruCache.put(Key_TopicList_LastScroll, scrollY);
103-
mDiskCache.put(Key_TopicList_LastScroll, scrollY);
113+
public void saveTopicListScroll(Integer lastScrollY) {
114+
saveData(Key_TopicList_LastScroll, lastScrollY);
104115
}
105116

106117
public Integer getTopicLastScroll() {
107118
return getData(Key_TopicList_LastScroll, 0);
108119
}
109120

121+
private String Key_TopicList_PageIndex = "Key_TopicList_PageIndex";
122+
123+
public void saveTopicListPageIndex(Integer pageIndex){
124+
saveData(Key_TopicList_PageIndex, pageIndex);
125+
}
126+
127+
public Integer getTopicListPageIndex(){
128+
return getData(Key_TopicList_PageIndex, 0);
129+
}
130+
110131
}

diycode-sdk/src/main/java/com/gcssloop/diycode_sdk/api/topic/bean/Topic.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,4 +157,16 @@ public void setAbilities(Abilities abilities) {
157157
public Abilities getAbilities() {
158158
return this.abilities;
159159
}
160+
161+
@Override
162+
public boolean equals(Object obj) {
163+
if (!(obj instanceof Topic)) {
164+
return false;
165+
}
166+
Topic temp = (Topic) obj;
167+
if (temp.getId() == getId()) {
168+
return true;
169+
}
170+
return false;
171+
}
160172
}

0 commit comments

Comments
 (0)