Android 复用自制的控件
项目每个页面都需要一个比较复杂的导航控件 其实就是一个很多按钮的布局
当然这个一个一个写绑定事件完全没问题,但项目有20来个页面 一个一个写就不好了,于是想到把他放到一widger包下 那个页面用到了 include他的xml然后在Activity实例化他
FootView.java
package com.aijia.widget; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.aijia.main.AijiaExitActivity; import com.aijia.main.AijiaTabsActivity; import com.aijia.main.R; import com.aijia.main.AijiaIndexActivity; import com.aijia.overall.Constant; public class FootView { private Button index; private Button back; private Button shopcar; private Context context; private Button f_order; private Button f_exit; public FootView(Context context) { this.context = context; } public void init(View view) { index = (Button) view.findViewById(R.id.f_index); back = (Button) view.findViewById(R.id.f_back); shopcar = (Button) view.findViewById(R.id.f_shopcar); f_order = (Button) view.findViewById(R.id.f_order); f_exit = (Button) view.findViewById(R.id.f_exit); index.setOnClickListener(listener); back.setOnClickListener(listener); shopcar.setOnClickListener(listener); f_order.setOnClickListener(listener); f_exit.setOnClickListener(listener); } private OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.f_index: gotoIntent(AijiaIndexActivity.class); break; case R.id.f_back: ((Activity) context).finish(); break; case R.id.f_shopcar: Constant.CURRENTTABID = 3; gotoIntent(AijiaTabsActivity.class); break; case R.id.f_order: Constant.CURRENTTABID = 4; gotoIntent(AijiaTabsActivity.class); break; case R.id.f_exit: gotoIntent(AijiaExitActivity.class); break; default: break; } } }; private void gotoIntent(Class<?> cls) { Intent intent = new Intent(context, cls); context.startActivity(intent); ((Activity) context).finish(); } }
如上 可以进行跳转退出等操作 注意他的init方法 参数是一个view,哪里的view呢?我们看Activity调用他的代码
FootView footView = new FootView(context); View roverall_footer = this.findViewById(R.id.overall_footer); footView.init(roverall_footer);
这样的话就可以 在应用中复用自己的控件了.