在開發中,有時候爲了組件的重複利用,會把在不同地方使用的相同佈局提出來,作爲一個template模板,方便重複利用,
比如我要封裝一個listview列表的item,就可以這麼做
1.定義一個類繼承 LinearLayout 佈局文件裏暫 放一個 ImageView和TextView,根據實際情況自行修改需要的控件即可。
public class CartColumItemView extends LinearLayout {
private LinearLayout ll_cartitems;
private ImageView iv;
private Context context;
public CartColumItemView(Context context) {
this(context, null);
this.context = context;
}
public CartColumItemView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CartColumItemView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context = context;
init(context, attrs, defStyleAttr);
}
private void init(Context context, AttributeSet attrs, int defStyleAttr) {
this.context = context;
inflate(context, R.layout.cart_goods_item, this);
ll_cartitems = findViewById(R.id.ll_cartitems);
iv = findViewById(R.id.iv);
}
public void setData(Goods infodata) {
// 加載網絡圖片
Glide.with(context).load(infodata.imgurl).into(iv);
}
}
2.下面再介紹一下,可以重複生成多個以上 1 這種佈局的方法
同理再定義一個類 集成 LinearLayout
public class CartColumView extends LinearLayout {
public CartColumView(Context context) {
super(context);
init(context, null, 0);
}
public CartColumView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context, attrs, 0);
}
public CartColumView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs, defStyleAttr);
}
private void init(Context context, AttributeSet attrs, int defStyleAttr) {
setOrientation(VERTICAL);//垂直方向
}
//生成不同個數的item
public void setRecommend(List<Goods> datas) {
removeAllViews();
for (Goods entity : datas) {
CartColumItemView cartColumItemView = new CartColumItemView(getContext());
addView(cartColumItemView);
cartColumItemView.setData(entity);
}
}
}
這種方法還是比較方便的