1. 程式人生 > >介面的使用—自定義view點選事件的介面回撥

介面的使用—自定義view點選事件的介面回撥

    我這裡使用的是自定義組合view點選事件的介面回撥,底層還是呼叫的android原生的OnClickListener事件。效果圖:

這裡寫圖片描述

    三步實現自定義view點選事件的介面回撥。
    第一步:寫一個自己的點選事件的介面
public interface ClickListener {
    void Click(View v);//引數不知道怎麼傳可以先不傳
}
    第二步:寫一個自定義view,我這裡以我的組合view例
public class TypeCardTopCustomView extends LinearLayout {
    private
LinearLayout llLeft, llMiddle, llRight; private ClickListener clickListener; public TypeCardTopCustomView(Context context) { super(context); init(context); } public TypeCardTopCustomView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public
TypeCardTopCustomView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context); } private void init(final Context context) { View view = LayoutInflater.from(context).inflate(R.layout.view_custom_card_type, this); llLeft = (LinearLayout) view.findViewById(R.id.ll_left_custom_bottom_fragment_home); llMiddle = (LinearLayout) view.findViewById(R.id.ll_middle_custom_bottom_fragment_home); llRight = (LinearLayout) view.findViewById(R.id.ll_right_custom_bottom_fragment_home); llLeft.setOnClickListener(new
OnClickListener() { @Override public void onClick(View v) { if (clickListener != null) { clickListener.Click(v); } } }); llMiddle.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (clickListener != null) { clickListener.Click(v); } } }); llRight.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (clickListener != null) { clickListener.Click(v); } } }); } /** * 這個方法等同於setOnClickListener * @param clickListener 這個介面就是OnClickListener */ public void setCustomOnClickListener(ClickListener clickListener) { this.clickListener = clickListener; } }
    第三步:呼叫setCustomOnClickListener方法。
TypeCardTopCustomView customView = (TypeCardTopCustomView) findViewById(R.id.custom1);
        customView.setCustomOnClickListener(new ClickListener() {
            @Override
            public void Click(View v) {
                switch (v.getId()) {
                    case R.id.ll_left_custom_bottom_fragment_home:
                        Toast.makeText(MainActivity.this, "left", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.ll_middle_custom_bottom_fragment_home:
                        Toast.makeText(MainActivity.this, "middle", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.ll_right_custom_bottom_fragment_home:
                        Toast.makeText(MainActivity.this, "right", Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        });
    就這樣沒了。是不是很簡單?

專案連結