void bindValueToNode()

in AutofillFramework/afservice/src/main/java/com/example/android/autofill/service/data/adapter/DatasetAdapter.java [141:188]


    void bindValueToNode(AssistStructure.ViewNode viewNode,
            FilledAutofillField field, Dataset.Builder builder,
            MutableBoolean setValueAtLeastOnce) {
        AutofillId autofillId = viewNode.getAutofillId();
        if (autofillId == null) {
            logw("Autofill ID null for %s", viewNode.toString());
            return;
        }
        int autofillType = viewNode.getAutofillType();
        switch (autofillType) {
            case View.AUTOFILL_TYPE_LIST:
                CharSequence[] options = viewNode.getAutofillOptions();
                int listValue = -1;
                if (options != null) {
                    listValue = indexOf(viewNode.getAutofillOptions(), field.getTextValue());
                }
                if (listValue != -1) {
                    builder.setValue(autofillId, AutofillValue.forList(listValue));
                    setValueAtLeastOnce.value = true;
                }
                break;
            case View.AUTOFILL_TYPE_DATE:
                Long dateValue = field.getDateValue();
                if (dateValue != null) {
                    builder.setValue(autofillId, AutofillValue.forDate(dateValue));
                    setValueAtLeastOnce.value = true;
                }
                break;
            case View.AUTOFILL_TYPE_TEXT:
                String textValue = field.getTextValue();
                if (textValue != null) {
                    builder.setValue(autofillId, AutofillValue.forText(textValue));
                    setValueAtLeastOnce.value = true;
                }
                break;
            case View.AUTOFILL_TYPE_TOGGLE:
                Boolean toggleValue = field.getToggleValue();
                if (toggleValue != null) {
                    builder.setValue(autofillId, AutofillValue.forToggle(toggleValue));
                    setValueAtLeastOnce.value = true;
                }
                break;
            case View.AUTOFILL_TYPE_NONE:
            default:
                logw("Invalid autofill type - %d", autofillType);
                break;
        }
    }