Autofill sample: Use custom adapter for cc exp years.

Bug: 38182790
Test: manual
Change-Id: Ieef7e94664b973781e7320c04cdb6d3b3af14eeb
diff --git a/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.java b/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.java
index 7feb393..37dd7fe 100644
--- a/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.java
+++ b/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.java
@@ -21,12 +21,24 @@
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import android.widget.ArrayAdapter;
+import android.widget.EditText;
 import android.widget.Spinner;
 
 import com.example.android.autofillframework.R;
 
+import java.util.Calendar;
+
 public class CreditCardActivity extends AppCompatActivity {
 
+    private static final int CC_EXP_YEARS_COUNT = 5;
+
+    private final String[] years = new String[CC_EXP_YEARS_COUNT];
+
+    private Spinner mCcExpirationDaySpinner = findViewById(R.id.expirationDay);
+    private Spinner mCcExpirationMonthSpinner = findViewById(R.id.expirationMonth);
+    private Spinner mCcExpirationYearSpinner = findViewById(R.id.expirationYear);
+    private EditText mCcNumber = findViewById(R.id.creditCardNumberField);
+
     public static Intent getStartActivityIntent(Context context) {
         Intent intent = new Intent(context, CreditCardActivity.class);
         return intent;
@@ -55,11 +67,17 @@
         monthAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         ccExpirationMonthSpinner.setAdapter(monthAdapter);
 
-        ArrayAdapter<CharSequence> yearAdapter = ArrayAdapter.createFromResource
-                (this, R.array.year_array, android.R.layout.simple_spinner_item);
-        yearAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-        ccExpirationYearSpinner.setAdapter(yearAdapter);
-
+        int year = Calendar.getInstance().get(Calendar.YEAR);
+        for (int i = 0; i < years.length; i++) {
+            years[i] = Integer.toString(year + i);
+        }
+        ccExpirationYearSpinner.setAdapter(
+                new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, years) {
+                    @Override
+                    public CharSequence[] getAutofillOptions() {
+                        return years;
+                    }
+                });
         findViewById(R.id.submit).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -75,7 +93,10 @@
     }
 
     private void resetFields() {
-        //TODO
+        mCcExpirationDaySpinner.setSelection(0);
+        mCcExpirationMonthSpinner.setSelection(0);
+        mCcExpirationYearSpinner.setSelection(0);
+        mCcNumber.setText("");
     }
 
     /**
diff --git a/input/autofill/AutofillFramework/Application/src/main/res/values/strings.xml b/input/autofill/AutofillFramework/Application/src/main/res/values/strings.xml
index 69cd217..3bda735 100644
--- a/input/autofill/AutofillFramework/Application/src/main/res/values/strings.xml
+++ b/input/autofill/AutofillFramework/Application/src/main/res/values/strings.xml
@@ -98,17 +98,6 @@
         <item>31</item>
     </string-array>
 
-    <string-array name="year_array">
-        <item>2017</item>
-        <item>2018</item>
-        <item>2019</item>
-        <item>2020</item>
-        <item>2021</item>
-        <item>2022</item>
-        <item>2023</item>
-        <item>2024</item>
-    </string-array>
-
     <string-array name="mock_autocomplete_sign_in_suggestions">
         <item>user-1</item>
         <item>user-2</item>
diff --git a/input/autofill/AutofillFramework/kotlinApp/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.kt b/input/autofill/AutofillFramework/kotlinApp/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.kt
index d804311..c8136ed 100644
--- a/input/autofill/AutofillFramework/kotlinApp/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.kt
+++ b/input/autofill/AutofillFramework/kotlinApp/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.kt
@@ -22,14 +22,20 @@
 import android.widget.ArrayAdapter
 import com.example.android.autofillframework.R
 import kotlinx.android.synthetic.main.credit_card_activity.clear
+import kotlinx.android.synthetic.main.credit_card_activity.creditCardNumberField
 import kotlinx.android.synthetic.main.credit_card_activity.expirationDay
 import kotlinx.android.synthetic.main.credit_card_activity.expirationMonth
 import kotlinx.android.synthetic.main.credit_card_activity.expirationYear
 import kotlinx.android.synthetic.main.credit_card_activity.submit
+import java.util.Calendar
 
 
 class CreditCardActivity : AppCompatActivity() {
 
+    private val CC_EXP_YEARS_COUNT = 5
+
+    private val years: Array<CharSequence?> = arrayOfNulls<CharSequence>(CC_EXP_YEARS_COUNT)
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.credit_card_activity)
@@ -45,16 +51,25 @@
         monthAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
         expirationMonth.adapter = monthAdapter
 
-        val yearAdapter = ArrayAdapter.createFromResource(this, R.array.year_array, android.R.layout.simple_spinner_item)
-        yearAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
-        expirationYear.adapter = yearAdapter
-
+        val year = Calendar.getInstance().get(Calendar.YEAR)
+        for (i in years.indices) {
+            years[i] = Integer.toString(year + i)
+        }
+        expirationYear.adapter =
+                object : ArrayAdapter<CharSequence?>(this, android.R.layout.simple_spinner_item, years) {
+                    override fun getAutofillOptions(): Array<CharSequence?> {
+                        return years
+                    }
+                }
         submit.setOnClickListener { submitCcInfo() }
         clear.setOnClickListener { resetFields() }
     }
 
     private fun resetFields() {
-        //TODO
+        creditCardNumberField.setText("")
+        expirationDay.setSelection(0)
+        expirationMonth.setSelection(0)
+        expirationYear.setSelection(0)
     }
 
     /**
diff --git a/input/autofill/AutofillFramework/kotlinApp/Application/src/main/java/com/example/android/autofillframework/multidatasetservice/AutofillHelper.kt b/input/autofill/AutofillFramework/kotlinApp/Application/src/main/java/com/example/android/autofillframework/multidatasetservice/AutofillHelper.kt
index 027d0f3..dc62d12 100644
--- a/input/autofill/AutofillFramework/kotlinApp/Application/src/main/java/com/example/android/autofillframework/multidatasetservice/AutofillHelper.kt
+++ b/input/autofill/AutofillFramework/kotlinApp/Application/src/main/java/com/example/android/autofillframework/multidatasetservice/AutofillHelper.kt
@@ -27,20 +27,6 @@
 import com.example.android.autofillframework.R
 import com.example.android.autofillframework.multidatasetservice.model.FilledAutofillFieldCollection
 import java.util.HashMap
-import android.view.View.AUTOFILL_HINT_USERNAME
-import android.view.View.AUTOFILL_HINT_POSTAL_CODE
-import android.view.View.AUTOFILL_HINT_POSTAL_ADDRESS
-import android.view.View.AUTOFILL_HINT_PASSWORD
-import android.view.View.AUTOFILL_HINT_NAME
-import android.view.View.AUTOFILL_HINT_PHONE
-import android.view.View.AUTOFILL_HINT_EMAIL_ADDRESS
-import android.view.View.AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE
-import android.view.View.AUTOFILL_HINT_CREDIT_CARD_NUMBER
-import android.view.View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR
-import android.view.View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH
-import android.view.View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY
-import android.view.View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE
-
 
 
 /**
diff --git a/input/autofill/AutofillFramework/kotlinApp/Application/src/main/res/values/strings.xml b/input/autofill/AutofillFramework/kotlinApp/Application/src/main/res/values/strings.xml
index 2072d7b..445e435 100644
--- a/input/autofill/AutofillFramework/kotlinApp/Application/src/main/res/values/strings.xml
+++ b/input/autofill/AutofillFramework/kotlinApp/Application/src/main/res/values/strings.xml
@@ -98,17 +98,6 @@
         <item>31</item>
     </string-array>
 
-    <string-array name="year_array">
-        <item>2017</item>
-        <item>2018</item>
-        <item>2019</item>
-        <item>2020</item>
-        <item>2021</item>
-        <item>2022</item>
-        <item>2023</item>
-        <item>2024</item>
-    </string-array>
-
     <string-array name="mock_autocomplete_sign_in_suggestions">
         <item>user-1</item>
         <item>user-2</item>