From dd1d4d0f7bf7a494dfd356440466c6754916d7ba Mon Sep 17 00:00:00 2001 From: Sulekha Date: Fri, 22 Feb 2019 10:55:10 +0000 Subject: [PATCH 1/5] Autocompletion List is added to the Username field. When new string is typed in the Username field it gets added to the autocompletion list. --- .../simpleloginform/MainActivity.java | 52 +++++++++++++++++-- app/src/main/res/layout/activity_main.xml | 5 +- 2 files changed, 52 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/training/simpleloginform/MainActivity.java b/app/src/main/java/com/training/simpleloginform/MainActivity.java index 59eb90a..bc54cd9 100644 --- a/app/src/main/java/com/training/simpleloginform/MainActivity.java +++ b/app/src/main/java/com/training/simpleloginform/MainActivity.java @@ -2,25 +2,38 @@ import android.os.Bundle; import android.support.v7.app.AppCompatActivity; +import android.text.Editable; +import android.text.TextWatcher; import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + /** * Assignment add validation to edit text fields *

* if an edit text is empty, show a toast that says "edit text cannot be empty", where edit text can be username or password */ -public class MainActivity extends AppCompatActivity implements View.OnClickListener { +public class MainActivity extends AppCompatActivity implements View.OnClickListener, TextWatcher { - private EditText usernameEditText; + private AutoCompleteTextView usernameEditText; private EditText passwordEditText; private Button submitButton; private TextView usernameDetailsTextView; private TextView passwordDetailsTextView; private Button resetButton; + List names = new ArrayList<>(); + Set namesList = new HashSet<>(); + @Override protected void onCreate(Bundle savedInstanceState) { @@ -34,8 +47,18 @@ protected void onCreate(Bundle savedInstanceState) { submitButton = findViewById(R.id.submit_button); resetButton = findViewById(R.id.reset_button); + + names.add("Desmond"); + names.add("Dean"); + names.add("Iliana"); + names.add("Sulekha"); + + usernameEditText.addTextChangedListener(this); + usernameEditText.setAdapter(new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, names)); + submitButton.setOnClickListener(this); resetButton.setOnClickListener(this); + } @@ -48,10 +71,15 @@ public void onClick(View view) { usernameDetailsTextView.setText(username); passwordDetailsTextView.setText(password); + + names.add(username); + namesList.addAll(names); + names.clear(); + names.addAll(namesList); + break; case R.id.reset_button: setResetButton(); - break; } } @@ -62,5 +90,23 @@ public void setResetButton() { usernameDetailsTextView.setText(""); passwordDetailsTextView.setText(""); + } + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + usernameEditText.setAdapter(new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, names)); + + } + + @Override + public void afterTextChanged(Editable s) { + + } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 2574d5d..ff87e81 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -20,12 +20,13 @@ android:textColor="@android:color/holo_green_dark" android:textStyle="bold" /> - + android:hint="@string/username_edit_text_hint" + android:completionThreshold="1"/> From 929988be454c077f182929a621f0c32cf1f32e6e Mon Sep 17 00:00:00 2001 From: Sulekha Date: Fri, 22 Feb 2019 15:17:16 +0000 Subject: [PATCH 2/5] Added separate NamesList Class Avoided adding duplicate strings to the list using for loop and contains() method --- .../simpleloginform/MainActivity.java | 28 ++++++++++--------- .../com/training/simpleloginform/Names.java | 22 +++++++++++++++ 2 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/com/training/simpleloginform/Names.java diff --git a/app/src/main/java/com/training/simpleloginform/MainActivity.java b/app/src/main/java/com/training/simpleloginform/MainActivity.java index bc54cd9..df716e7 100644 --- a/app/src/main/java/com/training/simpleloginform/MainActivity.java +++ b/app/src/main/java/com/training/simpleloginform/MainActivity.java @@ -13,6 +13,7 @@ import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -31,8 +32,11 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe private TextView passwordDetailsTextView; private Button resetButton; - List names = new ArrayList<>(); - Set namesList = new HashSet<>(); + Names names = new Names(); + + List namesList = new ArrayList<>(); + + //Set namesList = new HashSet<>(); @Override @@ -47,14 +51,10 @@ protected void onCreate(Bundle savedInstanceState) { submitButton = findViewById(R.id.submit_button); resetButton = findViewById(R.id.reset_button); - - names.add("Desmond"); - names.add("Dean"); - names.add("Iliana"); - names.add("Sulekha"); + namesList.addAll(names.getNames()); usernameEditText.addTextChangedListener(this); - usernameEditText.setAdapter(new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, names)); + usernameEditText.setAdapter(new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, namesList)); submitButton.setOnClickListener(this); resetButton.setOnClickListener(this); @@ -72,10 +72,12 @@ public void onClick(View view) { usernameDetailsTextView.setText(username); passwordDetailsTextView.setText(password); - names.add(username); - namesList.addAll(names); - names.clear(); - names.addAll(namesList); + for(int i = 0; i < namesList.size(); i++){ + + if(!namesList.contains(username)){ + namesList.add(username); + } + } break; case R.id.reset_button: @@ -100,7 +102,7 @@ public void beforeTextChanged(CharSequence s, int start, int count, int after) { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { - usernameEditText.setAdapter(new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, names)); + usernameEditText.setAdapter(new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, namesList)); } diff --git a/app/src/main/java/com/training/simpleloginform/Names.java b/app/src/main/java/com/training/simpleloginform/Names.java new file mode 100644 index 0000000..ab2b58c --- /dev/null +++ b/app/src/main/java/com/training/simpleloginform/Names.java @@ -0,0 +1,22 @@ +package com.training.simpleloginform; + +import java.util.ArrayList; +import java.util.List; + +public class Names { + + List names = new ArrayList<>(); + + public List getNames() { + + names.add("Desmond"); + names.add("Dean"); + names.add("Sidd"); + names.add("Nahi"); + names.add("Iliana"); + names.add("Sulekha"); + names.add("Damian"); + + return names; + } +} From f7d68b8ed708efca70638853c9b44126391f77c0 Mon Sep 17 00:00:00 2001 From: Sulekha Date: Fri, 22 Feb 2019 16:02:38 +0000 Subject: [PATCH 3/5] Made some changes - Removed unnecessary loop --- .../java/com/training/simpleloginform/MainActivity.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/app/src/main/java/com/training/simpleloginform/MainActivity.java b/app/src/main/java/com/training/simpleloginform/MainActivity.java index df716e7..06acc29 100644 --- a/app/src/main/java/com/training/simpleloginform/MainActivity.java +++ b/app/src/main/java/com/training/simpleloginform/MainActivity.java @@ -36,9 +36,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe List namesList = new ArrayList<>(); - //Set namesList = new HashSet<>(); - - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -72,12 +69,10 @@ public void onClick(View view) { usernameDetailsTextView.setText(username); passwordDetailsTextView.setText(password); - for(int i = 0; i < namesList.size(); i++){ - if(!namesList.contains(username)){ namesList.add(username); } - } + break; case R.id.reset_button: From 38ba04100b1d658700799cfe06bf66c11c8de5c6 Mon Sep 17 00:00:00 2001 From: Iliana Date: Fri, 22 Feb 2019 16:16:13 +0000 Subject: [PATCH 4/5] test - remove secondActivity --- app/src/main/AndroidManifest.xml | 1 - .../simpleloginform/SecondActivity.java | 26 ------------------- 2 files changed, 27 deletions(-) delete mode 100644 app/src/main/java/com/training/simpleloginform/SecondActivity.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5d5a05a..cbb787a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,7 +9,6 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - diff --git a/app/src/main/java/com/training/simpleloginform/SecondActivity.java b/app/src/main/java/com/training/simpleloginform/SecondActivity.java deleted file mode 100644 index de4d521..0000000 --- a/app/src/main/java/com/training/simpleloginform/SecondActivity.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.training.simpleloginform; - -import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.widget.TextView; - - -public class SecondActivity extends AppCompatActivity { - private TextView usernameDetailsTextView; - private TextView passwordDetailsTextView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_second); - usernameDetailsTextView = findViewById(R.id.username_details_textview); - passwordDetailsTextView = findViewById(R.id.password_details_textview); - - - usernameDetailsTextView.setText(getIntent().getStringExtra("username")); - passwordDetailsTextView.setText(getIntent().getStringExtra("password")); - - - } -} - From 5c7e72fe3fb5a4a9d5a19d52d5f1dd7cde9d7319 Mon Sep 17 00:00:00 2001 From: Iliana Date: Fri, 22 Feb 2019 16:37:14 +0000 Subject: [PATCH 5/5] changes have been implemented --- app/src/main/AndroidManifest.xml | 1 + .../simpleloginform/MainActivity.java | 8 +++--- .../simpleloginform/SecondActivity.java | 26 +++++++++++++++++++ app/src/main/res/layout/activity_second.xml | 22 ++++++++-------- app/src/main/res/values/dimens.xml | 3 +++ app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 app/src/main/java/com/training/simpleloginform/SecondActivity.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cbb787a..5d5a05a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> + diff --git a/app/src/main/java/com/training/simpleloginform/MainActivity.java b/app/src/main/java/com/training/simpleloginform/MainActivity.java index 5203a8a..54704fb 100644 --- a/app/src/main/java/com/training/simpleloginform/MainActivity.java +++ b/app/src/main/java/com/training/simpleloginform/MainActivity.java @@ -37,10 +37,10 @@ protected void onCreate(Bundle savedInstanceState) { public void onClick(View view) { switch (view.getId()) { case R.id.submit_button: - Intent i = new Intent(this, SecondActivity.class); - i.putExtra("username", usernameEditText.getText().toString()); - i.putExtra("password", passwordEditText.getText().toString()); - startActivity(i); + Intent intent = new Intent(this, SecondActivity.class); + intent.putExtra("username", usernameEditText.getText().toString()); + intent.putExtra("password", passwordEditText.getText().toString()); + startActivity(intent); break; diff --git a/app/src/main/java/com/training/simpleloginform/SecondActivity.java b/app/src/main/java/com/training/simpleloginform/SecondActivity.java new file mode 100644 index 0000000..de4d521 --- /dev/null +++ b/app/src/main/java/com/training/simpleloginform/SecondActivity.java @@ -0,0 +1,26 @@ +package com.training.simpleloginform; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.widget.TextView; + + +public class SecondActivity extends AppCompatActivity { + private TextView usernameDetailsTextView; + private TextView passwordDetailsTextView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_second); + usernameDetailsTextView = findViewById(R.id.username_details_textview); + passwordDetailsTextView = findViewById(R.id.password_details_textview); + + + usernameDetailsTextView.setText(getIntent().getStringExtra("username")); + passwordDetailsTextView.setText(getIntent().getStringExtra("password")); + + + } +} + diff --git a/app/src/main/res/layout/activity_second.xml b/app/src/main/res/layout/activity_second.xml index 40f35b4..e939848 100644 --- a/app/src/main/res/layout/activity_second.xml +++ b/app/src/main/res/layout/activity_second.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_margin="20dp" + android:layout_margin="@dimen/margin" android:orientation="vertical" tools:context=".SecondActivity"> @@ -17,9 +17,9 @@ android:id="@+id/username_label_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_margin="20dp" - android:hint="Username : " - android:textSize="20dp" + android:layout_margin="@dimen/margin" + android:hint="@string/username" + android:textSize="@dimen/txt_size" android:textStyle="bold" /> @@ -27,8 +27,8 @@ android:id="@+id/username_details_textview" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="20dp" - android:textSize="20dp" + android:layout_margin="@dimen/margin" + android:textSize="@dimen/txt_size" android:textStyle="bold" /> @@ -41,9 +41,9 @@ android:id="@+id/password_label_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_margin="20dp" - android:hint="Password : " - android:textSize="20dp" + android:layout_margin="@dimen/margin" + android:hint="@string/password" + android:textSize="@dimen/txt_size" android:textStyle="bold" /> @@ -51,8 +51,8 @@ android:id="@+id/password_details_textview" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="20dp" - android:textSize="20dp" + android:layout_margin="@dimen/margin" + android:textSize="@dimen/txt_size" android:textStyle="bold" /> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 460ffe4..f23d2bc 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,4 +1,7 @@ 20dp + 20dp + 20dp + 20sp \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f8500ac..1b6ee8c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,4 +6,6 @@ Password Submit reset + Username : + Password :