У меня есть пользовательское представление ProfileInputView
profile_input_view. xml
<?xml version="1.0" encoding="utf-8"?>
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="28dp"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
android:orientation="vertical">
<TextView
android:id="@+id/label_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:fontFamily="sans-serif"
android:textAllCaps="true"
android:textColor="@color/oppiaPrimaryText"
android:textSize="12sp" />
<EditText
android:id="@+id/input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:background="@drawable/add_profile_edit_text_background"
android:fontFamily="sans-serif"
android:padding="8dp"
android:textColor="@color/oppiaPrimaryText"
android:textSize="14sp"
android:textStyle="italic" />
<TextView
android:id="@+id/error_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/red" />
</LinearLayout>
</layout>
Я создал два экземпляра ProfileInputView внутри этого макета
admin_pin_activity. xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:profile="http://schemas.android.com/tools">
<data>
<variable
name="viewModel"
type="org.oppia.app.profile.AdminPinViewModel" />
</data>
<ScrollView
android:id="@+id/scrollViewAdminPin"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/addProfileBackground">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/admin_auth_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/addProfileBackground">
<TextView
android:id="@+id/admin_pin_main_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/admin_pin_requirement_description"
android:textColor="@color/oppiaPrimaryText"
android:textSize="16sp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="32dp"
android:paddingStart="32dp"
android:paddingEnd="32dp"/>
<TextView
android:id="@+id/admin_pin_warning_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/admin_pin_pin_description"
android:textSize="16sp"
android:textColor="@color/oppiaPrimaryText"
app:layout_constraintTop_toBottomOf="@+id/admin_pin_main_text"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="16dp"
android:paddingStart="32dp"
android:paddingEnd="32dp"/>
<org.oppia.app.profile.ProfileInputView
android:id="@+id/input_pin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/admin_pin_warning_text"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:label="@string/admin_pin_new_pin"
app:isPasswordInput="true"
app:inputLength="5"
profile:error="@{viewModel.pinErrorMsg}"/>
<org.oppia.app.profile.ProfileInputView
android:id="@+id/input_confirm_pin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/input_pin"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:label="@string/admin_pin_new_confirm"
app:isPasswordInput="true"
app:inputLength="5"
profile:error="@{viewModel.confirmPinErrorMsg}"/>
<Button
android:id="@+id/submit_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/admin_pin_submit"
style="@style/StateButtonActive"
app:layout_constraintTop_toBottomOf="@+id/input_confirm_pin"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="20dp"
android:layout_marginEnd="32dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
</layout>
Как дать уникальные идентификаторы для каждого поля EditText ProfileInputView.
По сути, когда я переключаю ориентацию экрана, каждый экземпляр имеет одинаковое значение текста, поскольку у них одинаковые идентификаторы для их EditTexts. Поэтому я хочу дать уникальные идентификаторы для каждого экземпляра EditText.