1. 程式人生 > >Android中BaseAdapter使用基礎點

Android中BaseAdapter使用基礎點

fadein hid 構造 asm context inflate imp div 小結

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使用基礎點