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;
}
}