layoutId被Common類(lèi)封裝了,怎么在外部更改??
@Override public?View?getView(int?position,?View?view,?ViewGroup?viewGroup){ ????????//?布局文件放在這里,外部怎么更改? ???ViewHolder?holder?=?ViewHolder.get(mContext,?view,?viewGroup,?R.layout.item_listview,?position); ???convert(holder,?getItem(position)); ???return?holder.getConvertView(); }
2018-01-03
把布局ID定義為Adapter全局,然后重構(gòu)造方法里傳進(jìn)來(lái)。比如:
public abstract class WrapAdapter<T> extends BaseAdapter {
? ?protected LayoutInflater ? ?mInflater;
? ?protected Context ? ? ? ? ? mContext;
? ?protected List<T> ? ? ? ? ? mDatas;
? ?protected final int ?mItemLayoutId;//外面使用Adapter時(shí)傳入的布局ID,在getView中使用此ID
? ?public WrapAdapter(Context context, List<T> mDatas, int itemLayoutId) {
? ? ? ?this.mContext = context;
? ? ? ?this.mInflater = LayoutInflater.from(mContext);
? ? ? ?this.mDatas = mDatas;
? ? ? ?this.mItemLayoutId = itemLayoutId;
? ?}
在getVIew 中使用
public?View?getView(int?position,?View?view,?ViewGroup?viewGroup){
???ViewHolder?holder?=?ViewHolder.get(mContext,?view,?viewGroup,?mItemLayoutId,?position);//此處的mItemLayouId就是從外面?zhèn)魅脒M(jìn)來(lái)的。
???convert(holder,?getItem(position));
???return?holder.getConvertView();
}