2727import android .support .v4 .util .ArrayMap ;
2828import android .support .v4 .widget .NestedScrollView ;
2929import android .support .v4 .widget .SwipeRefreshLayout ;
30+ import android .support .v7 .widget .LinearLayoutManager ;
3031import android .support .v7 .widget .RecyclerView ;
3132import android .view .View ;
3233import android .widget .TextView ;
3536import com .gcssloop .diycode .adapter .TopicAdapter ;
3637import com .gcssloop .diycode .base .app .BaseFragment ;
3738import com .gcssloop .diycode .base .app .ViewHolder ;
39+ import com .gcssloop .diycode .utils .Config ;
3840import com .gcssloop .diycode .utils .DataCache ;
39- import com .gcssloop .diycode .utils .RecyclerViewUtil ;
4041import com .gcssloop .diycode_sdk .api .Diycode ;
4142import com .gcssloop .diycode_sdk .api .topic .bean .Topic ;
4243import com .gcssloop .diycode_sdk .api .topic .event .GetTopicsListEvent ;
44+ import com .gcssloop .diycode_sdk .log .Logger ;
4345
4446import org .greenrobot .eventbus .EventBus ;
4547import org .greenrobot .eventbus .Subscribe ;
@@ -80,9 +82,12 @@ public class TopicListFragment extends BaseFragment {
8082 // View
8183 private TopicAdapter mAdapter ;
8284 private SwipeRefreshLayout mRefreshLayout ;
85+ NestedScrollView mScrollView ;
86+ private LinearLayoutManager mLinearLayoutManager ;
8387
8488 private boolean isFirstLaunch = true ; // 是否是第一次加载
8589
90+ private Config mConfig ;
8691
8792 public static TopicListFragment newInstance () {
8893 Bundle args = new Bundle ();
@@ -98,16 +103,18 @@ protected int getLayoutId() {
98103
99104 @ Override
100105 protected void initViews (ViewHolder holder , View root ) {
106+ mConfig = Config .getSingleInstance ();
101107 mDiycode = Diycode .getSingleInstance ();
102108 mDataCache = new DataCache (getContext ());
103109 mFooter = holder .get (R .id .footer );
110+ mScrollView = holder .get (R .id .scroll_view );
104111 initRefreshLayout (holder );
105112 initRecyclerView (getContext (), holder );
106113 initListener (holder );
107114 }
108115
109116 // 加载数据,默认从缓存加载
110- private void loadData () {
117+ private void initData () {
111118 mRefreshLayout .setEnabled (true );
112119 List <Topic > topics = mDataCache .getTopicsList ();
113120 if (null != topics && topics .size () > 0 ) {
@@ -137,9 +144,16 @@ private void initRefreshLayout(ViewHolder holder) {
137144 }
138145
139146 private void initRecyclerView (final Context context , ViewHolder holder ) {
140- mAdapter = new TopicAdapter (context , mDataCache );
141147 RecyclerView recyclerView = holder .get (R .id .recycler_view );
142- RecyclerViewUtil .init (context , recyclerView , mAdapter );
148+ mAdapter = new TopicAdapter (context , mDataCache );
149+ recyclerView .setAdapter (mAdapter );
150+ mLinearLayoutManager = new LinearLayoutManager (context );
151+ mLinearLayoutManager .setSmoothScrollbarEnabled (true );
152+ mLinearLayoutManager .setAutoMeasureEnabled (true );
153+ recyclerView .setLayoutManager (mLinearLayoutManager );
154+ recyclerView .setHasFixedSize (true );
155+ recyclerView .setNestedScrollingEnabled (false );
156+ Logger .e ("初始化View" );
143157 }
144158
145159 private void initListener (ViewHolder holder ) {
@@ -235,12 +249,32 @@ public void onTopicList(GetTopicsListEvent event) {
235249 public void onStart () {
236250 super .onStart ();
237251 EventBus .getDefault ().register (this );
238- loadData ();
252+ initData ();
253+ }
254+
255+ @ Override
256+ public void onResume () {
257+ super .onResume ();
258+ final int lastScroll = mConfig .getTopicLastScroll ();
259+ mScrollView .post (new Runnable () {
260+ @ Override
261+ public void run () {
262+ mScrollView .scrollTo (0 , lastScroll );
263+ }
264+ });
239265 }
240266
241267 @ Override
242268 public void onStop () {
243269 super .onStop ();
244270 EventBus .getDefault ().unregister (this );
245271 }
272+
273+ @ Override
274+ public void onDestroyView () {
275+ // 保存
276+ int lastScrollY = mScrollView .getScrollY ();
277+ mConfig .saveTopicListScroll (lastScrollY );
278+ super .onDestroyView ();
279+ }
246280}
0 commit comments