我有一个包含编辑文本的自定义视图。
我希望使用数据绑定在使用此自定义视图的类中观察此编辑文本的更改。
如何将编辑文本的输入字符串公开给使用自定义视图的其他类?
双向数据绑定是唯一的方法吗?
在其他 XML 中:
<MyCustomView
android:id="@+id/password_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:password="@={controller.password}"
app:isPasswordValid="@={controller.isValid}"/>
Run Code Online (Sandbox Code Playgroud)
自定义视图的布局(Linear Layout):
<merge>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/security_code_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/email_text_view">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/security_code_edit_text"
android:background="@drawable/edittext_background"
android:inputType="textPassword"
android:text="@={view.pass}"
app:onSubmit="@{() -> view.onKeyboardActionDoneClicked()}" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/textfield_error_invalid_password_length"
app:visibleOrGone="@{view.showInvalidPasswordText}" />
</merge>
Run Code Online (Sandbox Code Playgroud) 我有一个嵌套组件,用于发起上传图像的 HTTP 请求。它显示进度。
\nconst PreviewItem = React.memo(function PreviewItem(props: PreviewItemProps) {\n const {fileObject, handleRemove, classes, onUploadFinished} = props\n\n const [isLoading, setIsLoading] = useState(false)\n const [completed, setCompleted] = useState(0);\n\n const cancelTokenSource = axios.CancelToken.source();\n\n useEffect(() => {\n const data = new FormData();\n data.append('file', fileObject.file);\n\n const config: AxiosRequestConfig = {\n onUploadProgress: function (progressEvent) {\n const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);\n setCompleted(percentCompleted)\n },\n cancelToken: cancelTokenSource.token\n };\n\n if (!fileObject.isUploaded) {\n setIsLoading(true)\n avantiApi.post<DirectUploadResponse>("images/upload", data, config).then(response => {\n\n setIsLoading(false)\n\n if (onUploadFinished) {\n onUploadFinished(response.data, fileObject)\n }\n …Run Code Online (Sandbox Code Playgroud)