-
Adapter中控件與數(shù)據(jù)關(guān)聯(lián)關(guān)鍵代碼查看全部
-
將layout文件轉(zhuǎn)為View對(duì)象2/2查看全部
-
將layout文件轉(zhuǎn)為View對(duì)象1/2查看全部
-
baseAdapter的各種方法查看全部
-
原來之前一直寫的都是逗比的寫法。。。。。尷尬查看全部
-
mInflater查看全部
-
ItemBean的數(shù)組查看全部
-
getCount():適配器中數(shù)據(jù)集中數(shù)據(jù)的個(gè)數(shù) getItem():獲取數(shù)據(jù)集中指定索引對(duì)應(yīng)的數(shù)據(jù)項(xiàng)。 getItemId():獲取指定行對(duì)應(yīng)的id getView():獲取每一個(gè)item的顯示內(nèi)容。查看全部
-
base adapter有holder.查看全部
-
通用的高效適配器的打造 按照截圖的思路,我們可以將自定義的適配器封裝起來,方便以后調(diào)用,去解決其他的項(xiàng)目問題,也就是代碼復(fù)用。只需要修改ViewHolder的成員變量(也就是Item的控件)、修改對(duì)ViewHolder成員的賦值(ItemBean的成員變量的getter方法)就可以了,非常方便。查看全部
-
對(duì)于一些細(xì)微的程序比較效率用獲取系統(tǒng)納秒時(shí)間方法 關(guān)鍵代碼: long start =System.nanoTime();程序開始前計(jì)時(shí) ... long end =System.nanoTime();結(jié)束計(jì)時(shí) long dValue=end-start;計(jì)算查值 mSumTime +=dValue統(tǒng)計(jì)時(shí)間 log.d("xys",String.valueof(mSunTime));打印出時(shí)間 viewholder 作為findviewbyid的一個(gè)轉(zhuǎn)接,避免系統(tǒng)大量的遍歷提高效率。查看全部
-
1.創(chuàng)建ViewHolder類,含有所需的各種控件,為了避免重復(fù)的findViewById() class ViewHolder{ public ImageView tv_image; public TextView tv_title; public TextView tv_content; } 2.判斷convertView是否為空 空:用setTag()方法將ViewHolder與其綁定 非空:用getTag()方法,取出相關(guān)的ViewHolder 重點(diǎn): (1)convertView為空的時(shí)候,通過setTag()將ViewHolder與convertView綁定,每一個(gè)空的convertView都將會(huì)把Item的三個(gè)控件保存到ViewHolder里面。之后通過getTag()方法可以快速找到一個(gè)convertView所對(duì)應(yīng)的ViewHolder對(duì)象,然后通過ViewHolder的成員變量找到了對(duì)應(yīng)的三個(gè)控件,從而避免了用findViewById()去實(shí)例化對(duì)象。 (2)convertView不為空的時(shí)候,使用getTag()方法,取出它所關(guān)聯(lián)的ViewHolder對(duì)象,同時(shí)也找到l對(duì)應(yīng)控件。 3.之后再創(chuàng)建 ItemBean 對(duì)象,為viewHolder的三個(gè)控件賦值: ItemBean bean = mylist.get(position); viewHolder.imageView.setImageResource(bean.getItemImageid()); viewHolder.title.setText(bean.getItemTitle()); viewHolder.content.setText(bean.getItemContent()); 4.return convertView查看全部
-
普通式與逗比式的不同在于convertView的使用上: 普通式對(duì)convertView進(jìn)行了處理,充分利用了ListView的緩存機(jī)制,避免了重復(fù)創(chuàng)建View對(duì)象,因?yàn)橥ㄟ^LayoutInflater對(duì)象的inflate()方法創(chuàng)建View對(duì)象是非常耗時(shí)且耗資源的。 通過簡(jiǎn)單的判斷: if (convertView == null){ convertView = myInflater.inflate(R.layout.item, null); } ,就可以避免大量創(chuàng)建View對(duì)象,從而對(duì) getView()做了較好的優(yōu)化。 ----------------------------------- 摘自評(píng)論區(qū): 如果將findViewById寫在if(convertView==null)中的話,運(yùn)行后listview的順序是混亂的。 普通式,要慎用。 系統(tǒng)每次調(diào)用 findViewById()的時(shí)候都會(huì)遍歷一次視圖樹,當(dāng)視圖樹很復(fù)雜的時(shí)候就會(huì)消耗大量的時(shí)間。查看全部
-
為何是“逗比式”?因?yàn)檫@里只使用了getView()的position參數(shù),完全沒有利用另外兩個(gè)參數(shù)。本質(zhì)上說,是“沒有利用到ListView的緩存機(jī)制”。每次使用getView(),都通過 LayoutInflater 創(chuàng)建新的View對(duì)象view,并在view中找到相應(yīng)的控件、去給它設(shè)置相應(yīng)的值,完全沒有利用到 ListView 的緩存機(jī)制,這樣是對(duì)資源的極大浪費(fèi)。查看全部
-
具體說明查看全部
舉報(bào)
0/150
提交
取消