在專案中經常使用到介面卡,包括最基本的listview的介面卡,viewpager的介面卡,下面是我整合網上一些寫法,專案使用過程中進行了修改的介面卡,當業務用到的時候,只需要專注業務適配到ui即可,減少工作量:
封裝item 布局的 viewholder達到復用目的:
/**
* 復用item
*/public
class
viewholder
/*** 獲取item root view
**@return
*/public view getconvertview()
/*** 查詢view
**@param viewid
*@param
*@return
*/public
t getview(int viewid)
return (t) view;
}}
2.listview ,gridview檢視使用的基本介面卡:
/**
* 通用listview介面卡
* created by qiuh on 2015/5/27 14:44
*/public abstract
class
basereuseadapter
extends
baseadapter
//對資料的 crud操作
/** * 獲取所有資料,僅僅拷貝,不影響mdatas
* @return
*/public listgetdatas()
return
null;
}/**
* 新增新資料到末尾
* @param data
*/public void add(t data)
}/**
* 新增資料到指定位置
* @param position
* @param data
*/public void add(int position, t data)
}/**
* 新增新資料到末尾
* @param datas
*/public void add(listdatas)
}/**
* 清空列表,
* 放入新資料
* @param data
*/public void set(t data)
notifydatasetchanged();
}/**
* 清空列表,
* 放入新資料
* @param datas
*/public void set(listdatas)
notifydatasetchanged();
}/**
* 刪除指定的位置資料
* @param position
* @return
*/public t del(int position)
return
null;
}protected void checknulldatas()
}@override
public int getcount()
@override
public t getitem(int position)
return
null;
}@override
public long getitemid(int position)
@override
public view getview(int position, view convertview, viewgroup parent) else
injectdata(position, getitem(position), viewholder);
return convertview;
}/**
* 填充具體的布局
* @param position 根據position判斷,為多種布局提供便利
* @return
*/public abstract int injectlayoutres(int position);
/*** 填充具體布局的具體資料
* @param position 當前位置 為多種布局提高便利
* @param data 具體資料
* @param viewholder 具體布局
*/public abstract void injectdata(int position, t data, viewholder viewholder);
}
3.對viewpager使用view的時候,用到的介面卡:
/**
* user: qiuh
* date: 2015-08-16
* time: 14:19
* desc: 復用pagerview adapter
*/public abstract
class
basepageradapter
extends
pageradapter
/*** 獲取所有資料,僅僅拷貝,不影響mdatas
** @return
*/public listgetdatas()
return
null;
}/**
* 新增新資料到末尾
** @param data
*/public void add(t data)
}/**
* 新增資料到指定位置
** @param position
* @param data
*/public void add(int position, t data)
}/**
* 新增新資料到末尾
** @param datas
*/public void add(listdatas)
}/**
* 清空列表,
* 放入新資料
** @param data
*/public void set(t data)
notifydatasetchanged();
}/**
* 清空列表,
* 放入新資料
** @param datas
*/public void set(listdatas)
notifydatasetchanged();
}/**
* 刪除指定的位置資料
** @param position
* @return
*/public t del(int position)
return
null;
}protected void checknulldatas()
}@override
public int getcount()
@override
public boolean isviewfromobject(view view, object object)
@override
public object instantiateitem(viewgroup container, int position) else
injectdata(position, mdatas.get(position), vholder);
container.addview(vholder.getconvertview());
return vholder.getconvertview();
}@override
public void destroyitem(viewgroup container, int position, object object)
/*** 獲取布局檔案
** @return
*/protected
abstract int injectlayoutres();
/*** 填充具體布局的具體資料
** @param position 當前位置 為多種布局提高便利
* @param data 具體資料
* @param viewholder 具體布局
*/public abstract void injectdata(int position, t data, viewholder viewholder);
}
介面卡模式 預設介面卡,類介面卡,物件介面卡
模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...
介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...
STL介面卡 函式介面卡
有時候需要對內建函式物件返回值進行進一步的簡單計算,或者填上多餘的引數,不能直接代入演算法。函式介面卡實現了這一功能,函式介面卡是將一種函式物件轉化為另一種符合要求的函式物件。函式介面卡可以分為4個大類 繫結介面卡 組合介面卡 指標函式介面卡和成員函式介面卡。需求 在遍歷容器的時候,將容器中的值全部...