多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開源 > 綜合技術(shù) > Android 復(fù)雜布局的ListView優(yōu)化思路

Android 復(fù)雜布局的ListView優(yōu)化思路

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-01-29 08:31:37 閱讀次數(shù):6695次

         項(xiàng)目中用到1個(gè)內(nèi)部復(fù)雜布局的listview,每一個(gè)item中都有動(dòng)態(tài)的子item,相當(dāng)于listview的item中還有l(wèi)istview的樣式。剛開始做的思路是,用1個(gè)listview,然后item中加個(gè)LinearLayout,然后代碼動(dòng)態(tài)的生成子item view 添加在其中,希望這樣的表述大家能明白,依照這樣的思路做好以后發(fā)現(xiàn)快速滑動(dòng)的時(shí)候,1卡1頓,實(shí)在不能直視,在配置低點(diǎn)的機(jī)器上更是不能看。

但是由于趕進(jìn)度1直沒有優(yōu)化,現(xiàn)在回頭看下,雖然已用了viewHolder但是listview緩沖的機(jī)制完全沒有發(fā)揮作用,由于每一個(gè)item show的時(shí)候都需要removeAll 子item,然后再添加1遍,繪制的時(shí)間太長(zhǎng),造成了卡頓。

怎樣解決這個(gè)問題尼?

好google在support v7推出了recyclerView,有著更好的緩存優(yōu)化機(jī)制,我如獲救星,趕快將listview換成了recyclerView,但是效果不盡人意,沒有我想象中的效力提升,仔細(xì)想了想,recycleView只是針對(duì)listView的多type情況做了優(yōu)化,而實(shí)際需求中還是在item中動(dòng)態(tài)的生成item,沒有用到recyclerView的優(yōu)勢(shì)。

那末自然下面想到的就是干掉動(dòng)態(tài)生成的Item部份,把數(shù)據(jù)拆分成1個(gè)1個(gè)的listview item。但是又擔(dān)心這樣的工作量會(huì)不會(huì)很大,實(shí)際抽象進(jìn)程中發(fā)現(xiàn)很容易,就把原來(lái)1個(gè)model數(shù)據(jù)拆分成了7個(gè)不同類型的model,getView的時(shí)候先通過postion 獲得當(dāng)前model的type,然后返回不同的View item,很簡(jiǎn)單的就把原來(lái)只有1種item的listview拆分成了1個(gè)有7種類型Item的listView。跑起來(lái)以后,速度嘩嘩的,感覺就更1個(gè)item的1樣。

listView支持多種類型的Item時(shí)候還有個(gè)坑:繼承BaseAdapter的時(shí)候必須復(fù)寫下面兩個(gè)方法


//滑動(dòng)ListView的時(shí)候,第1個(gè)item消失以后,進(jìn)入屏幕的item類型必須通過<span style="font-family: Arial, Helvetica, sans-serif;">getItemViewType符合類型才會(huì)被復(fù)用,否則創(chuàng)建新的item類型,固然這些的條件是你必須使用了listView的緩存tag</span>
@Override public int getItemViewType(int position) { return super.getItemViewType(position); } //默許這個(gè)方法返回1,所有有幾種類型必須告知listView,listView就會(huì)創(chuàng)建幾個(gè)不同類型的隊(duì)列 @Override public int getViewTypeCount() { return super.getViewTypeCount(); }

這個(gè)時(shí)候,既然動(dòng)態(tài)生成子item的機(jī)制已被干掉了,我又想到了recyclerView,如果用recyclerView會(huì)不會(huì)比ListView更優(yōu)尼?說(shuō)干就干,10分鐘我已完成了替換(思路有了我搬磚的效力還是很快的),跑起來(lái)以后,果然唰唰的(其實(shí)肉眼已很難分辨出來(lái)和listView的區(qū)分了)。但是隨著google走應(yīng)當(dāng)不會(huì)錯(cuò),他自己說(shuō)的:

The RecyclerView widget is a more advanced and flexible version of ListView. This widget is a container for displaying large data sets that can be scrolled very efficiently by maintaining a limited number of views. Use the RecyclerViewwidget when you have data collections whose elements change at runtime based on user action or network events.


希望能幫助到有類似需求的同學(xué):

ListView中有復(fù)雜布局,特別是有動(dòng)態(tài)生成的布局的子布局的,可以斟酌1下將原來(lái)的Item拆分成不同的類型,然后使用recyclerView。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 高清欧美不卡一区二区三区 | 国产99精品一区二区三区免费 | 国产精品v欧美精品v日韩精品 | 一区二区三区中文 | 一级日本特黄毛片视频 | 欧美色老汉 | 中文字幕乱码中文 | 欧美成人亚洲欧美成人 | 亚洲天堂成人在线 | freefr性欧美69hd| 亚洲网站视频 | 国产精品国产亚洲精品不卡 | 一区二区三区 亚洲区 | 亚洲精品久久一区毛片 | 伊人久久五月天综合网 | v片免费在线观看 | 久久精品一品道久久精品9 久久精品一区二区 | 性欧美与印度人xxx 性欧美孕妇xxxx | 国产一二三区精品 | 999精品影视在线观看 | 有码中文 | 国产高清国产精品国产k | 久久久青草青青国产亚洲免观 | 图片区小说区校园 | 亚洲午夜久久久精品影院 | 羞羞色院91蜜桃在线观看 | 亚洲欧美色综合一区二区在线 | 日韩综合第一页 | 日本久久影视 | 最新毛片网 | 中国黄色毛片 大片 | 国产精品系列在线一区 | 日本一区二区视频在线观看 | 97婷婷狠狠成人免费视频 | 中文字幕第一页在线 | 国产精品免费小视频 | 日韩系列第一页 | 黑人巨大videosjapan高清 黑人巨大xxx | 亚洲视频一区在线观看 | 亚洲成人在线播放 | 女人16一毛片 |