Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin微调器使用双向数据绑定在Textview中设置选定值_Android_Kotlin_Android Databinding_2 Way Object Databinding - Fatal编程技术网

Android Kotlin微调器使用双向数据绑定在Textview中设置选定值

Android Kotlin微调器使用双向数据绑定在Textview中设置选定值,android,kotlin,android-databinding,2-way-object-databinding,Android,Kotlin,Android Databinding,2 Way Object Databinding,我试图从微调器中获取所选值,并使用双向数据绑定和可观察字符串将该值设置为我的TextView。 我尝试了以下代码,但无法在textview中设置所选项目的值 <androidx.appcompat.widget.AppCompatSpinner android:layout_width="match_parent" android:layout_height="wrap_content" android:entries

我试图从微调器中获取所选值,并使用双向数据绑定和可观察字符串将该值设置为我的TextView。 我尝试了以下代码,但无法在textview中设置所选项目的值

<androidx.appcompat.widget.AppCompatSpinner
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:entries="@array/array_name"
            android:id="@+id/spinner"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            bind:selectedValue="@={viewModel.text.get()}"
            />
       <TextView
            app:layout_constraintTop_toBottomOf="@+id/spinner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:hint="@string/submit"
            android:text="@={viewModel.text.get()}"/>

使用反向绑定将微调器数据绑定到文本的绑定适配器

@BindingAdapter(value = ["selectedValue", "selectedValueAttrChanged"], requireAll = false)
    fun bindSpinnerData(
        pAppCompatSpinner: AppCompatSpinner,
        newSelectedValue: String?,
        newTextAttrChanged: InverseBindingListener
    ) {
        pAppCompatSpinner.onItemSelectedListener = object : OnItemSelectedListener {
            override fun onItemSelected(
                parent: AdapterView<*>?,
                view: View?,
                position: Int,
                id: Long
            ) {
                newTextAttrChanged.onChange()
            }

            override fun onNothingSelected(parent: AdapterView<*>?) {}
        }
        if (newSelectedValue != null) {
            val pos =
                (pAppCompatSpinner.adapter as ArrayAdapter<String?>).getPosition(
                    newSelectedValue
                )
            pAppCompatSpinner.setSelection(pos, true)
        }
    }

    @InverseBindingAdapter(attribute = "selectedValue", event = "selectedValueAttrChanged")
    fun captureSelectedValue(pAppCompatSpinner: AppCompatSpinner): String? {
        return pAppCompatSpinner.selectedItem as String
    }
}
@BindingAdapter(value=[“selectedValue”,“selectedValueAttrChanged”],requireAll=false)
有趣的喷丝头数据(
pAppCompatSpinner:AppCompatSpinner,
newSelectedValue:字符串?,
newTextAttrChanged:InverseBindingListener
) {
pAppCompatSpinner.onItemSelectedListener=对象:onItemSelectedListener{
已选择“覆盖”选项(
家长:AdapterView?,
视图:视图?,
职位:Int,
id:长
) {
newTextAttrChanged.onChange()
}
覆盖未选择的乐趣(父项:AdapterView?{}
}
if(newSelectedValue!=null){
瓦尔波斯=
(pAppCompatSpinner.adapter作为阵列适配器)。获取位置(
新选择值
)
pAppCompatSpinner.setSelection(位置,真)
}
}
@InverseBindingAdapter(attribute=“selectedValue”,event=“selectedValueAttrChanged”)
有趣的captureSelectedValue(pAppCompatSpinner:AppCompatSpinner):字符串?{
返回pAppCompatSpinner.selectedItem作为字符串
}
}
视图模型

class SelectionViewModel: BaseViewModel<SelectionNavigator>() {
    private var text: ObservableField<String>? = null
    fun SelectionViewModel() {
        text = ObservableField()
    }

    fun getText(): ObservableField<String>? {
        return text
    }

}
class SelectionViewModel:BaseViewModel(){
私有变量文本:ObservableField?=null
fun SelectionViewModel(){
text=observeField()
}
有趣的getText():ObservableField{
返回文本
}
}

语法不应该是
@={}
而不是
@=()
粘贴时我的错误,仍然面临着同样的问题。似乎从代码片段中看不到任何问题,我必须运行它并亲自查看,但是如果发现问题,请在此处编写答案。语法不应该是
@={}
而不是
=()
粘贴时我的错误,仍然面临着相同的问题。从代码片段中看不到任何问题,我必须运行它并亲自查看,但是如果发现问题,请在此处写出答案。