继承现有控件类
public class LeftButtonBar extends LinearLayout {
    // 默认实现的构造函数 begin
    public LeftButtonBar(Context context) {
        super(context);
    }

    public LeftButtonBar(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public LeftButtonBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

//    public LeftButtonBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
//        super(context, attrs, defStyleAttr, defStyleRes);
//    }
    // 默认实现的构造函数 end

    /**
     * 绘制页面的时候,加载视图并初始化控件。
     * */
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        InitControl();
    }

    private Context ctx;
    public boolean isInit = false;// 是否已经初始化标记,避免重复初始化。
    public boolean isInitView = false;// 是否已经挂载视图文件,避免重复初始化。

    private ListView mListViewLv1;// 列表控件
    // 列表项点击事件
    private OnClickListener itemClickListener;
    public OnClickListener getItemClickListener() {
        return itemClickListener;
    }
    public void setItemClickListener(OnClickListener itemClickListener) {
        this.itemClickListener = itemClickListener;
    }

    // 数据源
    private List<PosButtonDataView> posButtonListLevel1;

    public List<PosButtonDataView> getPosButtonListLevel1() {
        return posButtonListLevel1;
    }

    public void setPosButtonListLevel1(List<PosButtonDataView> posButtonListLevel1) {
        this.posButtonListLevel1 = posButtonListLevel1;
    }

    /**
     * 加载控件、加载视图。
     */
    public void InitControl() {
        try {
            if (isInit == true) {
                return;
            }
            isInit = false;
            if(!isInitView) {
                // 加载视图
                View.inflate(getContext(), R.layout.left_button_bar, this);
                isInitView = true;
            }
            ctx = getContext();
            // 查找视图中的控件
            mListViewLv1 = findViewById(R.id.listViewLv1);

            ListViewAdapterFFLevel1.CurrentSelectItem = -1;
            ListViewAdapterFFLevel1 adapterLv1 = new ListViewAdapterFFLevel1(ctx, R.layout.ff_stock_make_item_lv1, getPosButtonListLevel1());
            adapterLv1.setItemClickListener(getItemClickListener());
            mListViewLv1.setAdapter(adapterLv1);

            // 初始化成功,标记为true,避免重复初始化。
            isInit = true;
        } catch (Exception ex) {
            slog.e("LeftButtonBar", ex);
        }
    }
}

 

posted on 2023-06-27 09:44  邢帅杰  阅读(18)  评论(0编辑  收藏  举报