在開發的過程中,常常會用到viewpager、listview、gridview等、這些帶有item的檢視控制項,而這些控制項有個共同點就是都要用到它們的介面卡,我們在實現檢視展示時,一般都會去寫個自定義的介面卡去繼承pageradapter或adapter或adapter的子類,因為android原始碼自帶的這些介面卡都比較抽象,往往在我們開發時,寫的一些自定義介面卡都需要重寫adapter父類的一些方法,在重寫時,有很多較通用性的**,比較耦合,下面將pageradapter和adapter的子類baseadapter進行了封裝與抽象,免去了每次都去重寫這些通用的**,**如下:
1.viewpageradapter
/**
* 通用viewpageradapter
* @author jenly
* */
public class viewpageradapter extends pageradapter
@override
public void destroyitem(view container, int position, object object)
@override
public int getcount()
@override
public object instantiateitem(view container, int position)
@override
public boolean isviewfromobject(view paramview, object paramobject)
public listgetlistviews()
public void setlistviews(listlistviews)
}
因為viewpager的item基本上都是繼承view,所以這個viewpageradapter 基本上可作為viewpager控制項的通用介面卡。
2.abstractadapter
/**
* 抽象介面卡(免去一些通用的**)
* @author jenly
* * @param */
public abstract class abstractadapterextends baseadapter
@override
public int getcount()
@override
public object getitem(int position)
@override
public long getitemid(int position)
public listgetlistdata()
public void setlistdata(listlistdata)
public view inflate(int layoutid)
}
abstractadapter將父模擬較有共性的方法重寫,自定義介面卡時,只要繼承abstractadapter,重寫getview方法就可以了。
3.holderadapter
/**
* 通用介面卡(適合一些常規的介面卡)
* @author jenly
* * @param t:實體物件,h:viewholder
*/public abstract class holderadapterextends abstractadapter
@override
public view getview(int position, view convertview, viewgroup parent) else
bindviewdatas(holder,t,position);
return convertview; }
/*** 建立convertview
* @param layoutinflater
* @return
*/public abstract view buildconvertview(layoutinflater layoutinflater,t t,int position);
/*** 建立檢視holder
* @param convertview
* @return
*/public abstract h buildholder(view convertview,t t,int position);
/*** 繫結資料
* @param holder
* @param t
* @param position
*/public abstract void bindviewdatas(h holder,t t,int position);
}
holderadapter 繼承於上面的abstractadapter類,將getview方法進行重寫與抽象,使**更加簡潔,用起來更加簡單,只要是繼承於baseadapter的自定義介面卡類,改為繼承於holderadapter 基本上通用,然後只需實現buildconvertview、buildholder、bindviewdatas這三個方法。
下面是個自定義的測試介面卡,繼承holderadapter實現它的三個抽象方法:
/**
* @author jenly
* */
public class testholderadapter extends holderadapter
@override
public view buildconvertview(layoutinflater layoutinflater,string t, int position)
@override
public viewholder buildholder(view convertview,string t, int position)
@override
public void bindviewdatas(viewholder holder,string t, int position)
public static class viewholder
}
所有最新原始碼已總結上傳至
github
歡迎star或fork。
Android之Adapter用法總結
adapter是連線後端資料和前端顯示的介面卡介面,是資料和ui view 之間乙個重要的紐帶。在常見的view list view,grid view 等地方都需要用到adapter。下圖直觀的表達了data adapter view三者的關係 img android中所有的adapter一覽 i...
Android編碼學習之Adapter
1.apter的作用 adapter是將資料繫結到ui介面上的橋接類。adapter負責建立顯示每個專案的子view和提供對下層資料的訪問。adapter的作用就是將要在列表內顯示的資料和列表本身結合起來。列表本身只完成顯示的作用,其實他就是繼承自viewgroup類。但是他又有乙個獨特的函式就是s...
Android中的Adapter分析
adapter使資料繫結到控制項變得更加簡單和靈活。用途 為容器提供子檢視,利用檢視的資料和元資料來構建每個子檢視,arrayadapter cursoradapter resourcecursoradapter。如果需要自定義介面卡,可以擴充套件抽象類baseadapter。adapter是資料u...