1闷板, 二級列表(ExpandableListView)
①創(chuàng)建布局,找控件
②獲取數據:死數據院塞、網絡數據
③創(chuàng)建適配器:10個方法要掌握
④設置適配器
⑤父項遮晚、子項點擊事件
⑥基本屬性
2, Listview手動迫悠、自動加載更多
(1) Listview
①創(chuàng)建布局鹏漆,找控件
②獲取網絡數據
③創(chuàng)建適配器:兩個優(yōu)化(必會)
④設置適配器
(2) Listview手動加載更多
①創(chuàng)建布局巩梢,找控件
②獲取網絡數據
③創(chuàng)建適配器:兩個優(yōu)化(必會)
④設置適配器
⑤給Listview添加一個footer
⑥點擊footer中button加載更多:page++创泄,獲取數據
(3) Listview自動加載更多
①創(chuàng)建布局,找控件
②獲取網絡數據
③創(chuàng)建適配器:兩個優(yōu)化(必會)
④設置適配器
⑤定義一個變量isBottom表示是否滑到底部
⑥Listview設置滑動監(jiān)聽
3括蝠, 側滑菜單
①添加依賴
②創(chuàng)建布局:DrawerLayout鞠抑、NavigationView(三個屬性、menu)
③設置actionbar:toolbar設置標題忌警、logo搁拙、關聯toobar和側滑菜單
④監(jiān)聽事件:頭部監(jiān)聽、側滑菜單監(jiān)聽法绵、DrawerLayout箕速、代買開關側滑菜單
⑤沉浸式狀態(tài)欄
4, 選項菜單
①創(chuàng)建選項菜單(onCreateOptionsMenu):兩種方式-代碼和menu(showAsAction)
②選項菜單的點擊事件(onOptionsItemSelected):switch
5, 上下文菜單
①注冊上下文菜單:registerForContextMenu()
②創(chuàng)建上下文菜單:onCreateContextMenu()
③上下文菜單點擊事件:onContextItemSelected()
5, RecyclerView基本使用
①添加依賴(版本問題注意)
②創(chuàng)建布局(寬高必須是充滿的)
③找控件
④設置布局管理器(三種顯示方式:線性布局朋譬、網格布局盐茎、瀑布流布局)
⑤獲取數據(切換子線程的方法)
⑥創(chuàng)建適配器-- 重寫三個,通過接口回調實現點擊事件
⑦設置適配器
7, RecyclerView多布局一:list+banner
① RecyclerView基本使用
②定義類型常量
③重寫方法getItemViewType()根據位置返回不同類型
④重寫oncreateViewHolder()根據不同類型加載不同的布局
⑤重寫onBindViewHolder()根據不用類型加載不同數據
8, RecyclerView多布局二:奇數位置左圖右文字+偶數位置左文字右圖片
① RecyclerView基本使用(看6)
②定義類型常量
③重寫方法getItemViewType()根據位置返回不同類型
④重寫oncreateViewHolder()根據不同類型加載不同的布局
⑤重寫onBindViewHolder()根據不用類型加載不同數據
注意:沒有7中注意
9. RecyclerView通過接口回調實現點擊事件
①在adapter定義一個內部接口徙赢,內部接口定義一個方法字柠,方法參數是我們需要返回值的;
②在adapter定義接口變量狡赐,并設置set方法
③在onBindVIewholder()中窑业,給條目做一個點擊事件
④在fragment或者activity中,使用adapter對象調用點擊事件即可
10, RecyclerView添加刷新
①添加依賴
②在布局中添加刷新的控件并找控件
③給刷新控件添加加載更多枕屉、下拉刷細膩添加監(jiān)聽常柄,監(jiān)聽中寫具體代碼
④刷新完畢列表,關閉SmartRefreshLayout頭和腳搀擂。
四拐纱、fragment
1. 靜態(tài)添加fragment
①創(chuàng)建一個fragment
②創(chuàng)建布局,把①中的fragment放到布局中
注意:
①必須要有id哥倔,否則:Caused by: java.lang.IllegalArgumentException: Binary XML file line #9: Must specify unique android:id, android:tag, or have a parent with an id for com.anfly.fragmentr.AFragment
②布局中必須添加屬性name秸架,值該fragment全類名
2. 動態(tài)添加fragment
//獲取碎片管理器
FragmentManager fm=getSupportFragmentManager();
//開啟事務
FragmentTransaction fragmentTransaction=fm.beginTransaction();
//獲取fragment對象
AFragment aFragment=newAFragment();
//替換容器中內容
fragmentTransaction.replace(R.id.fl_container,aFragment);
//提交事務fragmentTransaction.commit();
3. Transaction常用方法
①add
②remove
③replace
④hide
⑤show
⑥attach
⑦detach
⑧commit
4. fragment生命周期
①onAttach()
②onCreate()
③onCreateView()
④onActivityCreated()
⑤onStart()
⑥onResume()
⑦onPause()
⑧onStop()
⑨onDestroyView()
⑩onDestroy()
?onDetach()
5. fragment傳遞數據到activity
①獲取activity對象,直接調用方法
MainActivity activity = (MainActivity) getActivity();activity.getMsgFromFramgent("我是來自fragment的數據");
②接口回調傳遞數據
③通過fragment的有參構造傳數據(不推薦)
6. activity傳遞數據到fragment
①通過bundle方式傳值
activity中:
AFragment aFragment=newAFragment();
Bundle bundle=newBundle();bundle.putString("a","我是來自activity的數據");
aFragment.setArguments(bundle);
fragment中:
Bundle bundle=getArguments();
String a=bundle.getString("a");
7. fragment與fragment之間傳遞數據
①通過構造方式傳值(不推薦)
②通過FragmentManager找到對應Id或者Tag的Framgment,然后獲取里面的數據或方法
③通過它們所在的Activity作為橋梁,可以使用getActivity()或者接口回調,達到獲取另一個Fragment數據的目的.
8. RadioGroup底部導航結合Fragmentr切換
五咆蒿、ViewPager+tablayout
1. ViewPager結合view實現導航
①創(chuàng)建布局找控件
②獲取數據集合
③創(chuàng)建適配器:getCount()isViewFromObject()? instantiateItem()destroyItem()
④設置適配器
2. Viewpager結合Fragment實現導航
①創(chuàng)建布局找控件
②獲取fragment的集合fragments
③創(chuàng)建適配器:FragmentStatePagerAdapter和FragmentPagerAdapter區(qū)別以及內部方法
④設置適配器
3. Banner開源框架
banner.setBannerStyle(BannerConfig.NUM_INDICATOR_TITLE)
//設置風格.setImages(images)
//設置圖片集合.setBannerAnimation(Transformer.DepthPage)
//設置動畫.setBannerTitles(titles)
//直接添加無效东抹,必須設置BannerStyle.setImageLoader(newGlideImageLoader())
//圖片加載器.start();
4蚂子, Tablayout
①屬性
TVF
①創(chuàng)建布局找控件:TV
②創(chuàng)建兩個集合:fragments和titles
③創(chuàng)建適配器:四個方法(包含一個構造)
④設置適配器
⑤TV結合:tab.setupWithViewPager(vp);
⑥設置圖片選擇器tab.getTabAt(0).setIcon()
```
①創(chuàng)建布局找控件:TV
②創(chuàng)建兩個集合:fragments和titles
③創(chuàng)建適配器:四個方法(包含一個構造)
④設置適配器
⑤TV結合:tab.setupWithViewPager(vp);
⑥設置圖片選擇器tab.getTabAt(0).setIcon()
```
6. TVF涉及到的懶加載