chaychan / TouTiao

精仿今日头条
1.81k stars 583 forks source link

請教一下 #7

Closed tenSunFree closed 5 years ago

tenSunFree commented 7 years ago

01 02 關於上圖的SharedPreferences 裡面的資料, 是在哪個階段放進去的?

chaychan commented 7 years ago

@tenSunFree 在HomeFragment的initChannelData()方法中,这里保存选中的频道是因为首页有个+号,用户可以更换选择显示的频道,只不过目前还没有实现那个功能。

tenSunFree commented 7 years ago

可是HomeFragment的initChannelData()方法, 是在我檢視SharedPreferences 裡面的資料之後 所以下圖 SharedPreferences 裡面的資料, 應該跟HomeFragment的initChannelData()方法 無關吧? 03

chaychan commented 7 years ago

@tenSunFree initChannelData()方法中,if判断是否有保存选中的频道的json或未选中频道的json,如果没有会将array_news.xml定义的数组添加到集合中,最后调用 selectedChannelJson = mGson.toJson(mSelectedChannels);//将集合转换成json字符串,再调用 PreUtils.putString(Constant.SELECTED_CHANNEL_JSON, selectedChannelJson);//保存到sp,你说的保存到SharedPreferences就是在这里保存的,PreUtils就是关于SharePrefrence的工具类。

tenSunFree commented 7 years ago

@chaychan 原來如此, 謝謝喔

chaychan commented 7 years ago

@tenSunFree 不用客气

tenSunFree commented 7 years ago

再請教一下, 如果把HomeFragment裡面的initChannelData 刪減成這樣 2017-08-03_214612 省略了將mSelectedChannels 保存到SharedPreferences的動作, 似乎也是可以正常運作 那麼關於 保存到SharedPreferences的動作, 有它的必要性嗎?

chaychan commented 7 years ago

@tenSunFree 这样也是可以的,只不过每次它都需要通过读取string-array然后添加到集合,但是如果保存到SharePrefrence后,它可以直接读取SP中保存的json数组字符串,然后将他用Gson转换成对应的集合,效率上相对比较高。

tenSunFree commented 7 years ago

@chaychan 如果我想觸發下圖 第二個Log, 我應該怎麼滑動? 不管我怎麼滑動, 它都只會觸發第一個Log 2017-08-04_003419 2017-08-04_003951

chaychan commented 7 years ago

@tenSunFree 你好,之所以没有走到else,是因为SP中没有保存不要的频道,因为首页那个选择频道的功能尚未实现,所以此时未选频道是没有值的,你可以不考虑未选频道这个集合,就是说if判断中不考虑unSelectedChannel为空的情况,可以去掉,else中只是将SP中选中频道的json字符串转换成集合,未选中频道即不需要处理,你可以直接注释掉。

tenSunFree commented 7 years ago

@chaychan 懂了, 謝謝解惑

chaychan commented 7 years ago

@tenSunFree 不客气

tenSunFree commented 7 years ago

關於MainActivity裡面的 ViewPager 01 它被設定成 不可左右滑動切換 02 設定成不可左右滑動切換的動機 是什麼?

chaychan commented 7 years ago

@tenSunFree 因为MainActivity中的ViewPager是用于放置首页、视频、微头条、我的四个Fragment,其中首页和视频的Fragment布局都是TabLayout+ViewPager,今日头条的需求就是底部页签不需要滑动来切换,只是点击页签切换,而首页和视频中的ViewPager可以滑动切换,故MainActivity的ViewPager将其设置成不可滑动。

tenSunFree commented 7 years ago

@chaychan 了解, 謝謝喔