Android中BaseAdapter使用基礎點

來源:互聯網
上載者:User

標籤:article   proc   ack   導致   資料   資料傳遞   程式   repr   down   

Android中要填充一些控制項(如ListView)經常須要用到Adapter來實現,經常使用的有ArrayAdapter,SimpleAdapter,CursorAdapter,BaseAdapter,前幾個都是繼承自BaseAdapter的。

我平時經常使用的就是ArrayAdapter,再就是BaseAdapter了,SimpleAdapter本身事實上也不算簡單。所以能用SimpleAdapter的時候我一般都用了BaseAdapter。

至於CuesorAdapter我就差點兒沒用過。今天事實上是有點忘了BaseAdapter怎麼用了,在這記一下,以備後用,也就主要是講須要注意的東西。

1.BaseAdapter一般來說都是要重寫構造方法的。

事實上BaseAdapter總體而言還是比較好使用的,主要就實現四個抽象方法。可是當時突然想不起來怎麼把資料傳遞過去了,自然就想到了構造方法。看了曾經的代碼,知道了。所以這裡就有個結論:要用BaseAdapter就要重寫構造方法。

2 .BaseAdapter中要有Context對像。

由於BaseAdapter要填充自己寫的View。所以就要用到一個LayoutInflater對象,而要獲得LayoutInflater對象就須要用到LayoutInflater.from(context);方法。所以由此看來。又要記住一個小結論:要使用BaseAdapter就要定義一個Context。

要用到這個Context對象,還是要傳遞了,那麼進而再得到一個結論:要使用BaseAdapter要在構造方法中至少傳入一個Context對象參數。

3 .要使用ViewHolder類,裡麵包括自己定義布局裡的控制項。

我們知道ListView之類的須要最佳化。不然的話一直填充比較占記憶體,極端的時候可能發生記憶體不足的情況導致程式FC,所以就自定一個內部類ViewHolder來進行最佳化。所以我們再次得到一個結論:要使用BaseAdapter就自己定義一個ViewHolder類。用到的時候就執行個體化一個ViewHolder對象。
當convertView== null時。通過convertView = inflater.inflate(R.layout.list_item, null);初始化布局,然後初始化布局中的控制項,之後調用

convertView.setTag(viewHolder);else{     viewHolder= (ViewHolder) convertView.getTag(); }

就是又一次獲得組件。而不是又一次初始化。

Android中BaseAdapter使用基礎點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.