diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml
new file mode 100644
index 0000000..8b38e20
--- /dev/null
+++ b/.idea/dbnavigator.xml
@@ -0,0 +1,458 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 7ac24c7..5cd135a 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,8 +1,10 @@
+
-
+
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
index 7f68460..e497da9 100644
--- a/.idea/runConfigurations.xml
+++ b/.idea/runConfigurations.xml
@@ -3,6 +3,7 @@
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 2ffe4c2..6b58c0c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,14 +1,14 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 28
+ compileSdkVersion 30
defaultConfig {
applicationId "com.example.umangburman.databindingwithlivedata"
minSdkVersion 21
- targetSdkVersion 28
+ targetSdkVersion 30
versionCode 1
versionName "1.0"
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
buildTypes {
release {
@@ -23,16 +23,19 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
- implementation 'com.android.support.constraint:constraint-layout:1.1.3'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'com.android.support.test:runner:1.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ implementation 'androidx.appcompat:appcompat:1.3.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ testImplementation 'junit:junit:4.13.2'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
def life_versions = "1.1.1"
// Lifecycle components
- implementation "android.arch.lifecycle:extensions:$life_versions"
- annotationProcessor "android.arch.lifecycle:compiler:$life_versions"
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
+ //ViewModel components
+ implementation "androidx.lifecycle:lifecycle-viewmodel:2.3.1"
+ //noinspection LifecycleAnnotationProcessorWithJava8
+ annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.3.1'
}
diff --git a/app/src/androidTest/java/com/example/umangburman/databindingwithlivedata/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/example/umangburman/databindingwithlivedata/ExampleInstrumentedTest.java
index a85aad4..051853d 100644
--- a/app/src/androidTest/java/com/example/umangburman/databindingwithlivedata/ExampleInstrumentedTest.java
+++ b/app/src/androidTest/java/com/example/umangburman/databindingwithlivedata/ExampleInstrumentedTest.java
@@ -1,8 +1,8 @@
package com.example.umangburman.databindingwithlivedata;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e78c91a..957da8e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,7 +9,7 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
-
+
diff --git a/app/src/main/java/com/example/umangburman/databindingwithlivedata/View/MainActivity.java b/app/src/main/java/com/example/umangburman/databindingwithlivedata/View/MainActivity.java
deleted file mode 100644
index f62c9c4..0000000
--- a/app/src/main/java/com/example/umangburman/databindingwithlivedata/View/MainActivity.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.example.umangburman.databindingwithlivedata.View;
-
-import android.arch.lifecycle.Observer;
-import android.arch.lifecycle.ViewModelProviders;
-import android.databinding.DataBindingUtil;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
-import android.text.TextUtils;
-
-import com.example.umangburman.databindingwithlivedata.Model.LoginUser;
-import com.example.umangburman.databindingwithlivedata.R;
-import com.example.umangburman.databindingwithlivedata.ViewModel.LoginViewModel;
-import com.example.umangburman.databindingwithlivedata.databinding.ActivityMainBinding;
-
-import java.util.Objects;
-
-public class MainActivity extends AppCompatActivity {
-
- private LoginViewModel loginViewModel;
-
- private ActivityMainBinding binding;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- loginViewModel = ViewModelProviders.of(this).get(LoginViewModel.class);
-
- binding = DataBindingUtil.setContentView(MainActivity.this, R.layout.activity_main);
-
- binding.setLifecycleOwner(this);
-
- binding.setLoginViewModel(loginViewModel);
-
- loginViewModel.getUser().observe(this, new Observer() {
- @Override
- public void onChanged(@Nullable LoginUser loginUser) {
-
- if (TextUtils.isEmpty(Objects.requireNonNull(loginUser).getStrEmailAddress())) {
- binding.txtEmailAddress.setError("Enter an E-Mail Address");
- binding.txtEmailAddress.requestFocus();
- }
- else if (!loginUser.isEmailValid()) {
- binding.txtEmailAddress.setError("Enter a Valid E-mail Address");
- binding.txtEmailAddress.requestFocus();
- }
- else if (TextUtils.isEmpty(Objects.requireNonNull(loginUser).getStrPassword())) {
- binding.txtPassword.setError("Enter a Password");
- binding.txtPassword.requestFocus();
- }
- else if (!loginUser.isPasswordLengthGreaterThan5()) {
- binding.txtPassword.setError("Enter at least 6 Digit password");
- binding.txtPassword.requestFocus();
- }
- else {
- binding.lblEmailAnswer.setText(loginUser.getStrEmailAddress());
- binding.lblPasswordAnswer.setText(loginUser.getStrPassword());
- }
-
- }
- });
-
- }
-}
diff --git a/app/src/main/java/com/example/umangburman/databindingwithlivedata/Model/LoginUser.java b/app/src/main/java/com/example/umangburman/databindingwithlivedata/model/LoginUser.java
similarity index 80%
rename from app/src/main/java/com/example/umangburman/databindingwithlivedata/Model/LoginUser.java
rename to app/src/main/java/com/example/umangburman/databindingwithlivedata/model/LoginUser.java
index 8e70219..60a6a4f 100644
--- a/app/src/main/java/com/example/umangburman/databindingwithlivedata/Model/LoginUser.java
+++ b/app/src/main/java/com/example/umangburman/databindingwithlivedata/model/LoginUser.java
@@ -1,12 +1,12 @@
-package com.example.umangburman.databindingwithlivedata.Model;
+package com.example.umangburman.databindingwithlivedata.model;
import android.util.Patterns;
public class LoginUser {
- private String strEmailAddress;
- private String strPassword;
+ private final String strEmailAddress;
+ private final String strPassword;
public LoginUser(String EmailAddress, String Password) {
strEmailAddress = EmailAddress;
diff --git a/app/src/main/java/com/example/umangburman/databindingwithlivedata/view/MainActivity.java b/app/src/main/java/com/example/umangburman/databindingwithlivedata/view/MainActivity.java
new file mode 100644
index 0000000..25bc5f3
--- /dev/null
+++ b/app/src/main/java/com/example/umangburman/databindingwithlivedata/view/MainActivity.java
@@ -0,0 +1,56 @@
+package com.example.umangburman.databindingwithlivedata.view;
+
+import androidx.lifecycle.ViewModelProvider;
+import androidx.databinding.DataBindingUtil;
+
+import android.os.Bundle;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.text.TextUtils;
+
+import com.example.umangburman.databindingwithlivedata.R;
+import com.example.umangburman.databindingwithlivedata.viewmodel.LoginViewModel;
+import com.example.umangburman.databindingwithlivedata.databinding.ActivityMainBinding;
+
+import java.util.Objects;
+
+public class MainActivity extends AppCompatActivity {
+
+ private ActivityMainBinding binding;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ LoginViewModel loginViewModel = new ViewModelProvider(this).get(LoginViewModel.class);
+
+ binding = DataBindingUtil.setContentView(MainActivity.this, R.layout.activity_main);
+
+ binding.setLifecycleOwner(this);
+
+ binding.setLoginViewModel(loginViewModel);
+
+ loginViewModel.getUser().observe(this, loginUser -> {
+
+ if (TextUtils.isEmpty(Objects.requireNonNull(loginUser).getStrEmailAddress())) {
+ binding.txtEmailAddress.setError("Enter an E-Mail Address");
+ binding.txtEmailAddress.requestFocus();
+ } else if (!loginUser.isEmailValid()) {
+ binding.txtEmailAddress.setError("Enter a Valid E-mail Address");
+ binding.txtEmailAddress.requestFocus();
+ } else if (TextUtils.isEmpty(Objects.requireNonNull(loginUser).getStrPassword())) {
+ binding.txtPassword.setError("Enter a Password");
+ binding.txtPassword.requestFocus();
+ } else if (!loginUser.isPasswordLengthGreaterThan5()) {
+ binding.txtPassword.setError("Enter at least 6 Digit password");
+ binding.txtPassword.requestFocus();
+ } else {
+ binding.lblEmailAnswer.setText(loginUser.getStrEmailAddress());
+ binding.lblPasswordAnswer.setText(loginUser.getStrPassword());
+ }
+
+ });
+
+ }
+}
diff --git a/app/src/main/java/com/example/umangburman/databindingwithlivedata/ViewModel/LoginViewModel.java b/app/src/main/java/com/example/umangburman/databindingwithlivedata/viewmodel/LoginViewModel.java
similarity index 76%
rename from app/src/main/java/com/example/umangburman/databindingwithlivedata/ViewModel/LoginViewModel.java
rename to app/src/main/java/com/example/umangburman/databindingwithlivedata/viewmodel/LoginViewModel.java
index 402e4fd..f3a68b5 100644
--- a/app/src/main/java/com/example/umangburman/databindingwithlivedata/ViewModel/LoginViewModel.java
+++ b/app/src/main/java/com/example/umangburman/databindingwithlivedata/viewmodel/LoginViewModel.java
@@ -1,10 +1,11 @@
-package com.example.umangburman.databindingwithlivedata.ViewModel;
+package com.example.umangburman.databindingwithlivedata.viewmodel;
+
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
-import android.arch.lifecycle.MutableLiveData;
-import android.arch.lifecycle.ViewModel;
import android.view.View;
-import com.example.umangburman.databindingwithlivedata.Model.LoginUser;
+import com.example.umangburman.databindingwithlivedata.model.LoginUser;
public class LoginViewModel extends ViewModel {
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 8fbd4d9..1be713d 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -6,18 +6,18 @@
+ type="com.example.umangburman.databindingwithlivedata.viewmodel.LoginViewModel" />
-
-
+ tools:context=".view.MainActivity">
-
+
-
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 077cb2f..de09b28 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.1.4'
+ classpath 'com.android.tools.build:gradle:4.2.2'
// NOTE: Do not place your application dependencies here; they belong
diff --git a/gradle.properties b/gradle.properties
index 743d692..8de5058 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -6,6 +6,8 @@
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
+android.enableJetifier=true
+android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 7a3265e..758de96 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index a70daa8..d9a0e54 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sun Sep 09 23:45:19 IST 2018
+#Thu Jul 08 15:46:35 TRT 2021
distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip
distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
+zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index f177fb5..cccdd3d 100755
--- a/gradlew
+++ b/gradlew
@@ -123,7 +123,7 @@ if $cygwin ; then
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a loginUser-defined pattern to the cygpath arguments
+ # Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi