【问题标题】:How to calculate values on edittext when other edittext is focused?聚焦其他edittext时如何计算edittext上的值?
【发布时间】:2021-02-05 20:55:44
【问题描述】:

当某些编辑文本具有焦点时,我正在尝试进行一些数学运算。我有 3 个编辑文本,取决于哪个有焦点,数学运算会发生变化,其他两个编辑文本值也是如此。我在 Java 中有类似的东西,它工作正常,但在 Kotlin 上它没有输入任何所需的功能。

override fun onClick(v: View?) {
    if (edtProductSuggestedPrice.hasFocus() ) {
        calculateWitIVA(1)
    }
    if(edtProductSuggestedPriceWithIva.hasFocus()){
        calculateWitIVA(2)
    }
}

我怎样才能做到这一点?

【问题讨论】:

    标签: android kotlin focus


    【解决方案1】:

    我相信你需要使用MutableLiveData<String> 并且推荐使用双向数据绑定

    例如

    我的视图模型

    import androidx.lifecycle.MutableLiveData
    import androidx.lifecycle.ViewModel
    import com.yazan.talabatclonedriver.Repository
    import com.yazan.talabatclonedriver.db.UserEntity
    
    class UserViewModel(private val repository: Repository) : ViewModel() {
        val userName: MutableLiveData<String> = MutableLiveData("N/A")
        val phoneNum: MutableLiveData<String> = MutableLiveData("404")
        val driverPass: MutableLiveData<String> = MutableLiveData("")
    }
    

    和我的布局

        <?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:tools="http://schemas.android.com/tools">
    
        <data>
            <variable
                name="viewModel"
                type="com.yazan.talabatclonedriver.viewModel.UserViewModel" />
        </data>
    
        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/orange"
            tools:context=".ui.frags.SignInFrag">
    
            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="32dp"
                android:layout_marginTop="30dp"
                android:text="Welcome to \nTalabat Driver"
                android:textColor="#FFF"
                android:textSize="34sp"
                android:textStyle="bold"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />
    
            <ImageView
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_marginStart="32dp"
                android:layout_marginEnd="32dp"
                android:src="@drawable/scooter_delivery_pic"
                app:layout_constraintBottom_toTopOf="@+id/cv_login_container"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/textView"
                tools:ignore="ContentDescription" />
    
            <androidx.cardview.widget.CardView
                android:id="@+id/cv_login_container"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="32dp"
                android:layout_marginEnd="32dp"
                android:layout_marginBottom="32dp"
                app:cardElevation="20dp"
                app:layout_constraintBottom_toTopOf="@+id/tv_navigate_text"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent">
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical"
                    android:padding="15dp">
    
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        android:layout_marginBottom="15dp"
                        android:text="Log into your driver account"
                        android:textColor="#000"
                        android:textSize="22sp"
                        android:textStyle="bold" />
    
                    <EditText
                        android:id="@+id/et_userName"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:layout_marginBottom="15dp"
                        android:ems="5"
                        android:text="@={viewModel.userName}"
                        android:hint="Enter username"
                        android:textSize="20sp" />
    
                    <EditText
                        android:id="@+id/et_userPass"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:layout_marginBottom="15dp"
                        android:ems="5"
                        android:text="@={viewModel.driverPass}"
                        android:hint="Enter password"
                        android:textSize="20sp" />
    
                    <Button
                        android:id="@+id/bt_signIn"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:backgroundTint="@color/orange"
                        android:padding="10dp"
                        android:text="Continue"
                        android:textAllCaps="false"
                        android:textSize="18sp" />
    
                </LinearLayout>
    
            </androidx.cardview.widget.CardView>
    
    
            <TextView
                android:id="@+id/tv_navigate_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@{viewModel.driverPass}"
                android:textColor="#FFF"
                android:textSize="20sp"
                android:textStyle="bold"
                android:layout_marginBottom="20dp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent" />
    
        </androidx.constraintlayout.widget.ConstraintLayout>
    
    </layout>
    

    当您更改 et_userName 编辑文本时,tv_navigate_text 应该同时更改

    别忘了添加

      BuildFeatures{
    dataBinding = true
    }
    

    到你的关卡应用 Gradle

    【讨论】:

    • 感谢您的回复。我去看看
    猜你喜欢
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 2019-10-23
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多