Skip to content

Instantly share code, notes, and snippets.

View asolisf's full-sized avatar
🎯
Focusing on Kotlin

Alan Solis Flores asolisf

🎯
Focusing on Kotlin
View GitHub Profile
android {
...
dataBinding{
enabled = true
}
}
dependencies {
def lifecycle_version = "2.0.0"
...
@asolisf
asolisf / LoginActivity.java
Created September 12, 2019 21:43
MVVM Activity
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//ActivityLoginBinding is generated after build project
//and set layout and view model
ActivityLoginBinding activityLoginBinding
= DataBindingUtil.setContentView(this,R.layout.activity_login);
@asolisf
asolisf / LoginModel.java
Created September 12, 2019 21:42
MVVM Model
public class LoginModel {
private String email;
private String password;
public LoginModel(String email, String password) {
this.email = email;
this.password = password;
}
@asolisf
asolisf / LoginViewModel.java
Created September 12, 2019 21:41
MVVM ViewModel
public class LoginViewModel extends BaseObservable {
private final int PASSWORD_MIN_LENGTH = 8;
private LoginModel loginModel;
private boolean isSuccess;
public LoginViewModel(){
this.loginModel = new LoginModel("","");
@asolisf
asolisf / activity_login.xml
Created September 12, 2019 21:40
MVVM layout
<?xml version="1.0" encoding="utf-8"?>
<!--Root element maybe Layout-->
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/tools">
<data>
<!--Login view model-->
<variable
name="viewModel"
type="com.example.mvvm_ac.viewmodels.LoginViewModel" />
@asolisf
asolisf / AppInformation.cs
Created September 11, 2019 21:19
DI Android native contract implementation
public class AppInformation : IAppInformation
{
public string Version
{
get
{
var context = Application.Context;
PackageManager manager = context.PackageManager;
PackageInfo info = manager.GetPackageInfo( context.PackageName, default(int) );
@asolisf
asolisf / AppInformation.cs
Created September 11, 2019 21:18
DI IOS native contract implementation
namespace DependencyInjection.iOS.Dependencies
{
public class AppInformation : IAppInformation
{
public string Version =>
NSBundle.MainBundle.ObjectForInfoDictionary( "CFBundleShortVersionString" ).ToString();
}
}
@asolisf
asolisf / AppDelegate.cs
Created September 11, 2019 21:17
DI AppDelegate, register native dependencies
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
this.registerDependencies();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
@asolisf
asolisf / MainActivity.cs
Created September 11, 2019 21:16
DI MainActivity, register native dependencies
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
//...
this.registerDependencies();
LoadApplication(new App());
}
@asolisf
asolisf / MainPage.cs
Created September 11, 2019 21:14
DI Code Behind Resolve ViewModel instance and his dependencies
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
//Resolve ViewModel instance and his dependencies
BindingContext = App.Container.Resolve(typeof(MainViewModel));
}
}