4040import com .gcssloop .diycode_sdk .log .Logger ;
4141import com .gcssloop .recyclerview .adapter .multitype .HeaderFooterAdapter ;
4242
43- public class TopicListFragment extends RefreshRecyclerFragment <Topic , GetTopicsListEvent > {
43+ import java .util .ArrayList ;
44+ import java .util .List ;
4445
45- // RecyclerView 滚动位置保存与恢复
46- private int lastPosition = 0 ;
47- private int lastOffset = 0 ;
46+ public class TopicListFragment extends RefreshRecyclerFragment <Topic , GetTopicsListEvent > {
4847
4948 private boolean isFirstLaunch = true ;
5049 // 数据
@@ -69,20 +68,23 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
6968
7069 @ Override
7170 public void initData (HeaderFooterAdapter adapter ) {
72- /*
7371 List <Topic > topics = mDataCache .getTopicsList ();
7472 if (null != topics && topics .size () > 0 ) {
75- // TODO 恢复Index
73+ Logger .e ("topics : " + topics .size ());
74+ pageIndex = mConfig .getTopicListPageIndex ();
7675 adapter .addDatas (topics );
77- // 设置底部
7876 if (isFirstLaunch ) {
79- // TODO 滚动到上次到位置
77+ int lastPosition = mConfig .getTopicListLastPosition ();
78+ int lastOffset = mConfig .getTopicListLastOffset ();
79+ if (lastPosition != 0 ) {
80+ mRecyclerView .getLayoutManager ().scrollToPosition (lastPosition );
81+ }
82+ isFirstAddFooter = false ;
8083 isFirstLaunch = false ;
8184 }
8285 } else {
8386 loadMore ();
84- }*/
85- loadMore ();
87+ }
8688 }
8789
8890 @ Override
@@ -110,12 +112,14 @@ protected void onRefresh(GetTopicsListEvent event, HeaderFooterAdapter adapter)
110112 adapter .clearDatas ();
111113 adapter .addDatas (event .getBean ());
112114 toast ("刷新成功" );
115+ mDataCache .saveTopicsList (convert (adapter .getDatas ()));
113116 }
114117
115118 @ Override
116119 protected void onLoadMore (GetTopicsListEvent event , HeaderFooterAdapter adapter ) {
117120 adapter .addDatas (event .getBean ());
118121 toast ("加载更多成功" );
122+ mDataCache .saveTopicsList (convert (adapter .getDatas ()));
119123 }
120124
121125 @ Override
@@ -127,6 +131,16 @@ protected void onError(GetTopicsListEvent event, String postType) {
127131 }
128132 }
129133
134+ @ SuppressWarnings ("unchecked" )
135+ public ArrayList <Topic > convert (List <Object > objects ) {
136+ ArrayList <Topic > topics = new ArrayList <>();
137+ for (Object obj : objects ) {
138+ if (obj instanceof Topic )
139+ topics .add ((Topic ) obj );
140+ }
141+ return topics ;
142+ }
143+
130144 @ Override
131145 public void onDestroyView () {
132146 super .onDestroyView ();
@@ -136,10 +150,13 @@ public void onDestroyView() {
136150 // 保存状态
137151 private void saveState () {
138152 // 存储 PageIndex
153+ mConfig .saveTopicListPageIndex (pageIndex );
154+ // 存储 RecyclerView 滚动位置
139155 RecyclerView .LayoutManager layoutManager = mRecyclerView .getLayoutManager ();
140156 View view = layoutManager .getChildAt (0 );
141- lastPosition = layoutManager .getPosition (view );
142- lastOffset = view .getTop ();
157+ int lastPosition = layoutManager .getPosition (view );
158+ int lastOffset = view .getTop ();
159+ mConfig .saveTopicListState (lastPosition , lastOffset );
143160 Logger .e ("onDestroyView" , lastPosition + " : " + lastOffset );
144161 }
145162}
0 commit comments