介面的使用—自定義view點選事件的介面回撥
阿新 • • 發佈:2019-01-26
我這裡使用的是自定義組合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;
}
}
});
就這樣沒了。是不是很簡單?