Android中自定义组合控件

在开发中,有时候为了组件的重复利用,会把在不同地方使用的相同布局提出来,作为一个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);
        }
    }



}

 

这种方法还是比较方便的


 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章