Skip to content

Instantly share code, notes, and snippets.

View stfalconaleks's full-sized avatar

stfalconaleks

View GitHub Profile
private ProfileViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityProfileBinding binding = DataBindingUtil.setContentView(this, LAYOUT_ACTIVITY);
viewModel = new ProfileViewModel(this);
binding.setViewModel(viewModel);
}
public void onResume() {
isLoading.set(this.user.get() == null);
userRepo.getUser(this::onUserLoaded);
}
public abstract class BindingActivity extends AppCompatActivity {
@Override
protected void onStart() {
super.onStart();
viewModel.onStart();
}
@Override
private AppCompatActivity binding;
private ActivityViewModel viewModel;
public abstract ActivityViewModel onCreate();
public abstract @IdRes int getVariable();
public abstract @LayoutRes int getLayoutId();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
public abstract class ActivityViewModel extends BaseObservable {
protected Activity activity;
public ActivityViewModel(Activity activity) {
this.activity = activity;
}
public Activity getActivity() {
return activity;
public abstract class BindingActivity<B extends ViewDataBinding, VM extends ActivityViewModel> extends AppCompatActivity {
private B binding;
private VM viewModel;
public B getBinding() {
return binding;
}
}
public class ProfileActivity
extends BindingActivity<ActivityProfileBinding, ProfileViewModel> {
@Override
public ProfileViewModel onCreate() {
return new ProfileViewModel(this);
}
@Override
public int getVariable() {
<layout
xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="viewModel"
type="com.stfalcon.androidmvvmexample.features.dialogs.input.InputDialogVM"/>
</data>
<EditText
public final ObservableField<String> field = new ObservableField<String>() {
@Override
public String get() {
// TODO: your logic
return super.get();
}
@Override
public void set(String value) {
// TODO: your logic
field.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
// TODO: your logic
}
});