【问题标题】:EditText Binding from View in Kotlin not workingKotlin 中视图的 EditText 绑定不起作用
【发布时间】:2020-09-09 17:07:25
【问题描述】:

我正在尝试使用 mvvm 从 Kotlin 中的 View 页面更新 EditText。但是当 ViewModel 初始化时,默认值是绑定的,但是当我从 EditText onClick 侦听器更改值时,它不会更新 UI。

xml

<EditText
                android:id="@+id/itemsDatePicker"
                android:layout_width="300dp"
                android:layout_height="wrap_content"
                android:layout_gravity="end"
                android:text="@={itemviewmodel.selectedDateText}"
                android:onClick="@{itemviewmodel.datePickerOnClick}"
                android:hint="Select Date"

                tools:ignore="AutoFill,TextFields" />

查看模型

fun datePickerOnClick(view: View) {
    showDatePicker.value=true
}

查看

vm.showDatePicker.observe(this,androidx.lifecycle.Observer{ s->
        val myCalendar: Calendar = Calendar.getInstance()

        val date =
            DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth -> // TODO Auto-generated method stub
                myCalendar.set(Calendar.YEAR, year)
                myCalendar.set(Calendar.MONTH, monthOfYear)
                myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth)

                //This place should update the ui with selected date but not working as expected
                vm.selectedDateText.value =DateHelper.getTodayDate(myCalendar.getTime())
            }

        DatePickerDialog(
            this, date, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
            myCalendar.get(Calendar.DAY_OF_MONTH)
        ).show()
    })

非常感谢您为解决此问题提供的任何帮助。 提前致谢。 :)

【问题讨论】:

  • 这个onClick方法执行了吗?您可以添加整个 VM 代码吗?

标签: android kotlin mvvm


【解决方案1】:

如果您在谈论数据绑定,我假设您已经在依赖项中拥有它。

那么……

  1. 检查您是否将 xml mainLayout 包含在 &lt;layout&gt;&lt;/layout&gt;

  2. 检查您是否在 mainActivity 的 onCreate 之上创建了该布局的实例。例如:private lateinit var mainBinding: ActivityMainBinding

  3. 使用该实例/变量也可以获取编辑文本,例如:mainBinding.itemsDatePicker

【讨论】:

    猜你喜欢
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多