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);
        }
    }



}

 

這種方法還是比較方便的


 

 

 

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