-
1、BaseAdapter的三重境界之普通式的特點(diǎn): (1)利用了ListView的緩存特性,若沒有緩存才創(chuàng)建新的View, (2)但是findViewById依然會(huì)浪費(fèi)大量時(shí)間; 2、普通式與逗比式的差別 相比于逗比式只是將每次循環(huán)中自己創(chuàng)建的view換成getView方法中參數(shù)的convertView,調(diào)用getView方法先判斷view是否為空,不為空則表示已經(jīng)加載過了存在于緩沖池中,不需要重新創(chuàng)建新的View類對(duì)象來轉(zhuǎn)換布局文件; BaseAdapter的普通式: 充分利用ListView的緩存機(jī)制,如果沒有緩存才創(chuàng)建新的view. 但是findViewById依然會(huì)浪費(fèi)大量的時(shí)間。查看全部
-
新建數(shù)據(jù)適配器: 1.創(chuàng)建一個(gè)MyAdapter.java類,繼承BaseAdapter,成員變量mList,在MyAdapter的構(gòu)造方法中保存?zhèn)鬟M(jìn)來的List<ItemBean>類型的數(shù)據(jù)源。 2.getCount()方法返回ListView需要顯示的數(shù)據(jù)數(shù)量 mList.size()獲取數(shù)據(jù)源的數(shù)據(jù)數(shù)量 getItem()方法取指定索引的數(shù)據(jù)項(xiàng),mList.get(position)獲取position getItemId()方法獲取索引項(xiàng),直接返回position getView()方法返回?cái)?shù)據(jù)項(xiàng)顯示的內(nèi)容:/*逗比式,不考慮優(yōu)化,每次創(chuàng)建新的view,效率低下*/ *通過LayoutInflater方法將一個(gè)xml文件轉(zhuǎn)換為view對(duì)象(之后才能進(jìn)行控件的初始化findviewbyid操作) ----成員變量LayoutInflater mInflater;//布局裝載器對(duì)象 ----mInflater=LayoutInflater.from(context);//context是要使用當(dāng)前的Adapter的界面對(duì)象 *View view=mIflater.inflate(R.layout.item,null) *對(duì)封裝的控件分別進(jìn)行初始化操作 3.MainActivity中初始化ListView控件,并配置適配器listView.setAdapter(new MyAdapter(this,itemBeanList));查看全部
-
Adapter繼承自BaseAdapter 中的將XML轉(zhuǎn)換為View對(duì)象: LayoutInflater mInflater; mInflater=LayoutInflatet.from(context) 在getView中通過 View view=(View)mInflater.inflate(R.layout.xxx,null)加載Item布局轉(zhuǎn)換為View對(duì)象 通過View對(duì)象訪問到Item布局中的控件 ImageView image=(ImageView)view.findViewById(R.id.xxx) 然后通過 image.setImageResource(mlist.getItem(position).XXXid)設(shè)置圖片 數(shù)據(jù)源綁定到ListView上: listView.setAdapter(new MyAdapter(this,datalist數(shù)據(jù)源))查看全部
-
*創(chuàng)建一個(gè)ItemBean.java文件來封裝ListView中的控件。 并在封裝文件中寫構(gòu)造函數(shù)對(duì)成員變量進(jìn)行初始化。 *創(chuàng)建數(shù)據(jù)源時(shí),將數(shù)據(jù)源的類型直接定義為L(zhǎng)ist<ItemBean>,List<ItemBean> itemBeanList=new ArrayList<>();再用循環(huán)給ListView的每一行進(jìn)行賦值。查看全部
-
ItemBean的使用: 我們通常創(chuàng)建一個(gè)Bean對(duì)象來表示listView中一行顯示的數(shù)據(jù)。 創(chuàng)建List<ItemBean> itemBeanList=new ArrayList<>(); 通過for循環(huán)來添加數(shù)組內(nèi)容查看全部
-
item.xml查看全部
-
BaseAdapter基本結(jié)構(gòu) public int getCount();//適配器中數(shù)據(jù)集中數(shù)據(jù)的個(gè)數(shù) public Object getItem(int position);//獲取數(shù)據(jù)集中與指定索引對(duì)應(yīng)的數(shù)據(jù)項(xiàng) public long getItemId(int position);//獲取指定行對(duì)應(yīng)的ID public View getView(int position,View convertView,ViewGroup parent);//獲取每一個(gè)Item顯示內(nèi)容查看全部
-
ListView的顯示和緩存機(jī)制 總結(jié)來講: 需要才顯示,顯示完就被回收到緩沖池中。 1. 屏幕上滑時(shí),先將item1回收到View緩沖池中 2. 新要顯示的item8從View緩沖池中取出,并重新設(shè)置好item8所要顯示的數(shù)據(jù) 3. item8顯示出來查看全部
-
1.什么是數(shù)據(jù)適配器:通過數(shù)據(jù)適配器,我們可以將數(shù)據(jù)源和UI控件聯(lián)系起來。 2.數(shù)據(jù)適配器adapter的作用就是將多種多樣的數(shù)據(jù)源適配成listView可以讀取的模式。 (1)降低程序的耦合性 (2)容易擴(kuò)展 3.最常用的數(shù)據(jù)適配器:BaseAdapter查看全部
-
BaseAdapter文藝式 1、ViewHolder:getView()方法是利用了ViewHolder類,優(yōu)化了inflate()和findViewById()的耗時(shí)操作。 (1)創(chuàng)建一個(gè)ViewHolder對(duì)象,通過ViewHolder對(duì)象,就將這些通過findViewById()找到的組件對(duì)象保存到了ViewHolder對(duì)應(yīng)的組件對(duì)象中 (2)通過setTag()方法將這個(gè)viewHolder和當(dāng)前的view建立聯(lián)系 //這樣就可以將沒有緩存過的View對(duì)象創(chuàng)建出來,并將其每個(gè)組件保存在ViewHolder對(duì)象中。 (3)當(dāng)View不為空的時(shí)候就可以通過convertView.getTag()將它所關(guān)聯(lián)的viewHoloder對(duì)象取出。 (4)最后通過viewHolder中保存的組件對(duì)象設(shè)置當(dāng)前的view對(duì)象 //通過ViewHolder類其實(shí)是優(yōu)化了findViewById()的耗時(shí)操作查看全部
-
數(shù)據(jù)適配器的關(guān)系查看全部
-
viewhold優(yōu)化查看全部
-
初始化context查看全部
-
baseadapter查看全部
-
數(shù)據(jù)適配器查看全部
舉報(bào)
0/150
提交
取消