二.Header付きベースクラスActivity、DataBindingを使用してHeaderコンテンツの表示を制御する

2641 ワード

1.抽象的な方法を実現する
protected abstract  void configHeader(HeaderViewModel headerViewModel);

HeaderViewオブジェクトの変更、ヘッダの変更
public abstract  class HeaderAppCompatActivity extends BaseAppCompatActivity{
    private LinearLayout root_layout;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //   
        ActivityBaseBinding activityBaseBinding= DataBindingUtil.inflate(LayoutInflater.from(this),R.layout.activity_base,null,false);  
        
        HeaderViewModel headerViewModel = new HeaderViewModel();  
        
        configHeader(headerViewModel);
        
        activityBaseBinding.setHeaderViewModel(headerViewModel); 
        
        super.setContentView(activityBaseBinding.getRoot());


    }

    @Override
    public void setContentView(@LayoutRes int layoutResID) {
        setContentView(View.inflate(this, layoutResID, null));
    }

    @Override
    public void setContentView(View view) {
        root_layout = (LinearLayout) findViewById(R.id.root_layout);
        if (root_layout != null) {
            root_layout.addView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        }
    }
    
    /**
    *      
    */
    protected abstract  void configHeader(HeaderViewModel headerViewModel);

}

    
     
    
    
    
       
    

        

           

        


    

public  class HeaderViewModel  {
    public String headerName="";
    public boolean rightVisible=false;
    public boolean leftVisible=true;
    public void leftImageOnclick(View view){
           Context context= view.getContext();
           if(context instanceof Activity){
               Activity activity= (Activity) context;
               activity.finish();
           }
    }
}