Skip to content

Commit 15707f1

Browse files
committed
完善News状态保存
1 parent 7a63a71 commit 15707f1

3 files changed

Lines changed: 63 additions & 5 deletions

File tree

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -273,12 +273,15 @@ public boolean onOptionsItemSelected(MenuItem item) {
273273
openActivity(NotificationActivity.class);
274274
}
275275
return true;
276-
} else if (id == R.id.action_quick_to_top){
277-
Logger.e("点击返回头部"+mCurrentPosition);
278-
switch (mCurrentPosition){
276+
} else if (id == R.id.action_quick_to_top) {
277+
Logger.e("点击返回头部" + mCurrentPosition);
278+
switch (mCurrentPosition) {
279279
case 0:
280280
mFragment1.quickToTop();
281281
break;
282+
case 1:
283+
mFragment2.quickToTop();
284+
282285
}
283286
}
284287

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

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import com.gcssloop.diycode.base.app.ViewHolder;
4141
import com.gcssloop.diycode.base.recyclerview.GcsAdapter;
4242
import com.gcssloop.diycode.base.recyclerview.GcsViewHolder;
43+
import com.gcssloop.diycode.utils.Config;
4344
import com.gcssloop.diycode.utils.DataCache;
4445
import com.gcssloop.diycode.utils.RecyclerViewUtil;
4546
import com.gcssloop.diycode.utils.TimeUtil;
@@ -48,6 +49,7 @@
4849
import com.gcssloop.diycode_sdk.api.news.bean.New;
4950
import com.gcssloop.diycode_sdk.api.news.event.GetNewsListEvent;
5051
import com.gcssloop.diycode_sdk.api.user.bean.User;
52+
import com.gcssloop.diycode_sdk.log.Logger;
5153

5254
import org.greenrobot.eventbus.EventBus;
5355
import org.greenrobot.eventbus.Subscribe;
@@ -83,13 +85,16 @@ public class NewsListFragment extends BaseFragment {
8385

8486
// 数据
8587
private Diycode mDiycode; // 在线(服务器)
88+
private Config mConfig;
8689
private DataCache mDataCache; // 缓存(本地)
8790

8891
// View
8992
private GcsAdapter<New> mAdapter;
9093
private SwipeRefreshLayout mRefreshLayout;
9194

95+
private NestedScrollView mScrollView;
9296
private boolean isFirstLunch = true;
97+
boolean isFirstLaunch = true;
9398

9499
public static NewsListFragment newInstance() {
95100
Bundle args = new Bundle();
@@ -102,6 +107,7 @@ public static NewsListFragment newInstance() {
102107
public void onCreate(@Nullable Bundle savedInstanceState) {
103108
super.onCreate(savedInstanceState);
104109
mDiycode = Diycode.getSingleInstance();
110+
mConfig = Config.getSingleInstance();
105111
mDataCache = new DataCache(getContext());
106112
}
107113

@@ -110,13 +116,24 @@ protected int getLayoutId() {
110116
return R.layout.fragment_recycler_refresh;
111117
}
112118

113-
private void loadData() {
119+
private void initData() {
114120
mRefreshLayout.setEnabled(true);
115121
// 第一次加载,默认从缓存加载
116122
List<New> news = mDataCache.getNewsList();
117123
if (null != news && news.size() > 0) {
124+
pageIndex = mConfig.getNewsListPageIndex();
118125
mAdapter.addDatas(news);
119126
mFooter.setText(FOOTER_NORMAL);
127+
if (isFirstLaunch) {
128+
final int lastScroll = mConfig.getNewsLastScroll();
129+
mScrollView.post(new Runnable() {
130+
@Override
131+
public void run() {
132+
mScrollView.scrollTo(0, lastScroll);
133+
}
134+
});
135+
isFirstLaunch = false;
136+
}
120137
} else {
121138
loadMore();
122139
mFooter.setText(FOOTER_LOADING);
@@ -126,10 +143,11 @@ private void loadData() {
126143
@Override
127144
protected void initViews(ViewHolder holder, View root) {
128145
mFooter = holder.get(R.id.footer);
146+
mScrollView = holder.get(R.id.scroll_view);
129147
initRefreshLayout(holder);
130148
initRecyclerView(getContext(), holder);
131149
initListener(holder);
132-
loadData();
150+
initData();
133151
}
134152

135153
private void initRefreshLayout(ViewHolder holder) {
@@ -276,4 +294,20 @@ public void onStop() {
276294
super.onStop();
277295
EventBus.getDefault().unregister(this);
278296
}
297+
298+
@Override
299+
public void onDestroyView() {
300+
// 保存
301+
int lastScrollY = mScrollView.getScrollY();
302+
mConfig.saveNewsListScroll(lastScrollY);
303+
mConfig.saveNewsListPageIndex(pageIndex);
304+
super.onDestroyView();
305+
}
306+
307+
public void quickToTop() {
308+
Logger.e("快速返回");
309+
if (mScrollView != null) {
310+
mScrollView.smoothScrollTo(0, 0);
311+
}
312+
}
279313
}

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,4 +128,25 @@ public Integer getTopicListPageIndex(){
128128
return getData(Key_TopicList_PageIndex, 0);
129129
}
130130

131+
//--- News状态 ------------------------------------------------------------------------------
132+
133+
private String Key_NewsList_LastScroll = "Key_NewsList_LastScroll";
134+
135+
public void saveNewsListScroll(Integer lastScrollY) {
136+
saveData(Key_NewsList_LastScroll, lastScrollY);
137+
}
138+
139+
public Integer getNewsLastScroll() {
140+
return getData(Key_NewsList_LastScroll, 0);
141+
}
142+
143+
private String Key_NewsList_PageIndex = "Key_NewsList_PageIndex";
144+
145+
public void saveNewsListPageIndex(Integer pageIndex){
146+
saveData(Key_NewsList_PageIndex, pageIndex);
147+
}
148+
149+
public Integer getNewsListPageIndex(){
150+
return getData(Key_NewsList_PageIndex, 0);
151+
}
131152
}

0 commit comments

Comments
 (0)