1, 二級(jí)列表(ExpandableListView)
①創(chuàng)建布局,找控件
②獲取數(shù)據(jù):死數(shù)據(jù)、網(wǎng)絡(luò)數(shù)據(jù)
③創(chuàng)建適配器:10個(gè)方法要掌握
④設(shè)置適配器
⑤父項(xiàng)、子項(xiàng)點(diǎn)擊事件
⑥基本屬性
2, Listview手動(dòng)、自動(dòng)加載更多
(1) Listview
①創(chuàng)建布局,找控件
②獲取網(wǎng)絡(luò)數(shù)據(jù)
③創(chuàng)建適配器:兩個(gè)優(yōu)化(必會(huì))
④設(shè)置適配器
(2) Listview手動(dòng)加載更多
①創(chuàng)建布局,找控件
②獲取網(wǎng)絡(luò)數(shù)據(jù)
③創(chuàng)建適配器:兩個(gè)優(yōu)化(必會(huì))
④設(shè)置適配器
⑤給Listview添加一個(gè)footer
⑥點(diǎn)擊footer中button加載更多:page++,獲取數(shù)據(jù)
(3) Listview自動(dòng)加載更多
①創(chuàng)建布局,找控件
②獲取網(wǎng)絡(luò)數(shù)據(jù)
③創(chuàng)建適配器:兩個(gè)優(yōu)化(必會(huì))
④設(shè)置適配器
⑤定義一個(gè)變量isBottom表示是否滑到底部
⑥Listview設(shè)置滑動(dòng)監(jiān)聽
3, 側(cè)滑菜單
①添加依賴
②創(chuàng)建布局:DrawerLayout、NavigationView(三個(gè)屬性、menu)
③設(shè)置actionbar:toolbar設(shè)置標(biāo)題、logo、關(guān)聯(lián)toobar和側(cè)滑菜單
④監(jiān)聽事件:頭部監(jiān)聽、側(cè)滑菜單監(jiān)聽、DrawerLayout、代買開關(guān)側(cè)滑菜單
⑤沉浸式狀態(tài)欄
4, 選項(xiàng)菜單
①創(chuàng)建選項(xiàng)菜單(onCreateOptionsMenu):兩種方式-代碼和menu(showAsAction)
②選項(xiàng)菜單的點(diǎn)擊事件(onOptionsItemSelected):switch
5, 上下文菜單
①注冊(cè)上下文菜單:registerForContextMenu()
②創(chuàng)建上下文菜單:onCreateContextMenu()
③上下文菜單點(diǎn)擊事件:onContextItemSelected()
5, RecyclerView基本使用
①添加依賴(版本問(wèn)題注意)
②創(chuàng)建布局(寬高必須是充滿的)
③找控件
④設(shè)置布局管理器(三種顯示方式:線性布局、網(wǎng)格布局、瀑布流布局)
⑤獲取數(shù)據(jù)(切換子線程的方法)
⑥創(chuàng)建適配器-- 重寫三個(gè),通過(guò)接口回調(diào)實(shí)現(xiàn)點(diǎn)擊事件
⑦設(shè)置適配器
7, RecyclerView多布局一:list+banner
① RecyclerView基本使用
②定義類型常量
③重寫方法getItemViewType()根據(jù)位置返回不同類型
④重寫oncreateViewHolder()根據(jù)不同類型加載不同的布局
⑤重寫onBindViewHolder()根據(jù)不用類型加載不同數(shù)據(jù)
8, RecyclerView多布局二:奇數(shù)位置左圖右文字+偶數(shù)位置左文字右圖片
① RecyclerView基本使用(看6)
②定義類型常量
③重寫方法getItemViewType()根據(jù)位置返回不同類型
④重寫oncreateViewHolder()根據(jù)不同類型加載不同的布局
⑤重寫onBindViewHolder()根據(jù)不用類型加載不同數(shù)據(jù)
注意:沒(méi)有7中注意
9. RecyclerView通過(guò)接口回調(diào)實(shí)現(xiàn)點(diǎn)擊事件
①在adapter定義一個(gè)內(nèi)部接口,內(nèi)部接口定義一個(gè)方法,方法參數(shù)是我們需要返回值的;
②在adapter定義接口變量,并設(shè)置set方法
③在onBindVIewholder()中,給條目做一個(gè)點(diǎn)擊事件
④在fragment或者activity中,使用adapter對(duì)象調(diào)用點(diǎn)擊事件即可
10, RecyclerView添加刷新
①添加依賴
②在布局中添加刷新的控件并找控件
③給刷新控件添加加載更多、下拉刷細(xì)膩添加監(jiān)聽,監(jiān)聽中寫具體代碼
④刷新完畢列表,關(guān)閉SmartRefreshLayout頭和腳。
四、fragment
1. 靜態(tài)添加fragment
①創(chuàng)建一個(gè)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. 動(dòng)態(tài)添加fragment
//獲取碎片管理器
FragmentManager fm=getSupportFragmentManager();
//開啟事務(wù)
FragmentTransaction fragmentTransaction=fm.beginTransaction();
//獲取fragment對(duì)象
AFragment aFragment=newAFragment();
//替換容器中內(nèi)容
fragmentTransaction.replace(R.id.fl_container,aFragment);
//提交事務(wù)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傳遞數(shù)據(jù)到activity
①獲取activity對(duì)象,直接調(diào)用方法
MainActivity activity = (MainActivity) getActivity();activity.getMsgFromFramgent("我是來(lái)自fragment的數(shù)據(jù)");
②接口回調(diào)傳遞數(shù)據(jù)
③通過(guò)fragment的有參構(gòu)造傳數(shù)據(jù)(不推薦)
6. activity傳遞數(shù)據(jù)到fragment
①通過(guò)bundle方式傳值
activity中:
AFragment aFragment=newAFragment();
Bundle bundle=newBundle();bundle.putString("a","我是來(lái)自activity的數(shù)據(jù)");
aFragment.setArguments(bundle);
fragment中:
Bundle bundle=getArguments();
String a=bundle.getString("a");
7. fragment與fragment之間傳遞數(shù)據(jù)
①通過(guò)構(gòu)造方式傳值(不推薦)
②通過(guò)FragmentManager找到對(duì)應(yīng)Id或者Tag的Framgment,然后獲取里面的數(shù)據(jù)或方法
③通過(guò)它們所在的Activity作為橋梁,可以使用getActivity()或者接口回調(diào),達(dá)到獲取另一個(gè)Fragment數(shù)據(jù)的目的.
8. RadioGroup底部導(dǎo)航結(jié)合Fragmentr切換
五、ViewPager+tablayout
1. ViewPager結(jié)合view實(shí)現(xiàn)導(dǎo)航
①創(chuàng)建布局找控件
②獲取數(shù)據(jù)集合
③創(chuàng)建適配器:getCount()isViewFromObject()? instantiateItem()destroyItem()
④設(shè)置適配器
2. Viewpager結(jié)合Fragment實(shí)現(xiàn)導(dǎo)航
①創(chuàng)建布局找控件
②獲取fragment的集合fragments
③創(chuàng)建適配器:FragmentStatePagerAdapter和FragmentPagerAdapter區(qū)別以及內(nèi)部方法
④設(shè)置適配器
3. Banner開源框架
banner.setBannerStyle(BannerConfig.NUM_INDICATOR_TITLE)
//設(shè)置風(fēng)格.setImages(images)
//設(shè)置圖片集合.setBannerAnimation(Transformer.DepthPage)
//設(shè)置動(dòng)畫.setBannerTitles(titles)
//直接添加無(wú)效,必須設(shè)置BannerStyle.setImageLoader(newGlideImageLoader())
//圖片加載器.start();
4, Tablayout
①屬性
TVF
①創(chuàng)建布局找控件:TV
②創(chuàng)建兩個(gè)集合:fragments和titles
③創(chuàng)建適配器:四個(gè)方法(包含一個(gè)構(gòu)造)
④設(shè)置適配器
⑤TV結(jié)合:tab.setupWithViewPager(vp);
⑥設(shè)置圖片選擇器tab.getTabAt(0).setIcon()
```
①創(chuàng)建布局找控件:TV
②創(chuàng)建兩個(gè)集合:fragments和titles
③創(chuàng)建適配器:四個(gè)方法(包含一個(gè)構(gòu)造)
④設(shè)置適配器
⑤TV結(jié)合:tab.setupWithViewPager(vp);
⑥設(shè)置圖片選擇器tab.getTabAt(0).setIcon()
```
6. TVF涉及到的懶加載