从edittext

时间:2018-08-19 14:10:43

标签: android kotlin realm

我有以下问题:

对于我当前的Android应用程序项目,我使用Realm作为数据库,并且每次我的某个特定文本字段更改为赋予textview的值时,我都试图更新字符串值。但是问题是,每当对象的值更改时,文本字段的值就会与先前设置的字符混合,然后又变回来。我更改的项目也位于我的视口中。有任何想法吗? 这是我的代码

布局

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/entry_detail_form_8_til_text_field_container"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginTop="8dp"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    app:hintEnabled="true"
    app:layout_constraintTop_toBottomOf="@id/entry_detail_form_8_title"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent">

    <EditText
        android:id="@+id/entry_detail_form_8_et_text_field"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        style="@style/Widget.MaterialComponents.TextInputEditText.OutlinedBox"/>

</com.google.android.material.textfield.TextInputLayout>

和逻辑

holder.etTextArea?.addTextChangedListener(object : TextWatcher{
        override fun afterTextChanged(p0: Editable?) {

        }

        override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {

        }

        override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
            realm.executeTransaction {
                holder.fieldObject?.value = p0.toString()
            }
        }
    })

编辑:以下操作不能解决问题:

  • 将变更领域对象逻辑提取到适配器外部的回调中
  • 将逻辑移至afterTextChanged

1 个答案:

答案 0 :(得分:0)

通过在RecyclerView的Adapter中禁用autoUpdate修复了该问题,好像我的编辑文本的值与我要用新文本更改的字段有关