Android - 在数据绑定适配器中传递视图

悉达多·卡玛利亚

我有一个图像视图,上面有一个复选框,类似于多选图像库中的内容。

<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="entity"
            type="a.l.s.v.entity.Image" />
        <variable
            name="viewModel"
            type="a.l.s.v.image.ImageViewModel" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout>
        <ImageView
            android:id="@+id/image"
            ...
            app:loadImage="@{entity.uri}"/>
        <CheckBox
            android:id="@+id/imageCheckbox"
            ...
            app:visibleIf="@{viewModel.showCheckbox}"
            app:depressViewOnSelect="what goes here?"/> <!-- Can we pass views here? -->

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

目标:当长按作为 UX 确认的一种方式时,我试图压低图像(添加一些视图填充)。

在此处输入图片说明

问题:我想到的一个想法是通过适配器对复选框进行数据绑定,app:depressViewOnSelect然后ImageView从上面的布局中传入我不明白的是,如果我要传入view参数,我应该用 XML 写什么数据绑定完全有可能吗?

@JvmStatic
@BindingAdapter("app:depressViewOnSelect")
fun depressViewOnSelect(checkbox: CheckBox, view: View) {
    checkbox.setOnCheckedChangeListener { _, isChecked ->
        if(isChecked)
            view.setPadding(dpToPx(view.context, padding))
        else
            view.setPadding(0)
    }
}

编辑:目前我已经在onLongClick()my 的方法中添加了监听器RecyclerView.ViewHolder,它实现了OnLongClickListener. 当长按仅发生在单个视图持有者上时,在为图像实现拖动选择时,该方法的问题就出现了,这意味着侦听器未安装在其他视图持有者上。

悉达多·卡玛利亚

我添加了一个view变量以从布局访问它并将其绑定为binding.view = imageViewViewHolder实现中。

<data>
    <variable
        name="entity"
        type="app.lanet.sails.home.image.model.Image" />
    <variable
        name="view"
        type="android.widget.ImageView" />
    <variable
        name="counter"
        type="app.lanet.sails.home.common.media.selection.SelectionCounter" />
</data>

最后,将视图作为app:depressViewOnSelect="@{view}"XML 中的任何其他数据绑定参数传递

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

RecyclerView适配器中的数据绑定-Android

如何在Android适配器中传递Json数据

Android:通过Android数据绑定将Lambda传递给回收站适配器

使用数据绑定的具有多个视图类型的Android recyclerview适配器

Android绑定适配器传递多个参数导致错误

如何为 Android 中的 2 路数据绑定制作合适的绑定适配器

如何在android java中的数据绑定recyclerview适配器中创建2列

使用自定义适配器的Android数据绑定

在OnFocus中传递视图在数据绑定Android中更改

数据传递问题适配器到android中的片段(返回默认值<null>)

Android ListView中适配器和模板视图的组合

找不到Android绑定适配器

如何在Android的适配器中设置数据

Android-在Listview中显示来自适配器的数据

无法找到带有数据绑定绑定适配器 android 的符号 FragmentBindingImpl?

Android数据绑定添加小部件作为绑定适配器的参数

Android数据绑定问题绑定适配器调用两次

在visual-studio android sdk中,当适配器数据发生变化时更新列表视图

Android,适配器的getView中的NullPointerException

Android Stop recycler-查看已显示项目的适配器绑定数据

什么是Android设备上查看的数据绑定在RecyclerView适配器类的正确方法?

android:具有数据绑定的通用recyclerview适配器

Android数据绑定:可观察到的RecyclerView适配器列表

Android:在我的自定义适配器中使用数据绑定时未分配值

android.support.test.espresso.PerformException:在视图上执行“加载适配器数据”时出错

android recycler视图适配器,viewpagers,数据库,位图和内存不足错误

如何从模型类中检索全部子代并在android中传递适配器?

Android DataBinding自定义绑定适配器警告

Android绑定适配器不适用于CustomView