Android 復用自制的控件

項目每個頁面都需要一個比較復雜的導航控件 其實就是一個很多按鈕的佈局


當然這個一個一個寫綁定事件完全沒問題,但項目有20來個頁面 一個一個寫就不好瞭,於是想到把他放到一widger包下 那個頁面用到瞭 include他的xml然後在Activity實例化他

FootView.java

[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調用他的代碼
[java] 
FootView footView = new FootView(context); 
        View roverall_footer = this.findViewById(R.id.overall_footer); 
        footView.init(roverall_footer); 

這樣的話就可以 在應用中復用自己的控件瞭.

發佈留言