二.Header付きベースクラスActivity、DataBindingを使用してHeaderコンテンツの表示を制御する
2641 ワード
1.抽象的な方法を実現する
HeaderViewオブジェクトの変更、ヘッダの変更
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();
}
}
}