标签: android-databinding

数据绑定将android资源绑定到后台

我想要一个 EditText 可以根据可编辑或不可编辑的事实来更改其背景。

如果 EditText 是“可编辑的”,它将具有默认的 EditText 背景可绘制,如果不是,它将获得透明背景(看起来像一个简单的 textView)。

我已经这样做了:

android:background="@{viewModel.editable ? android.R.drawable.edit_text : android.R.color.transparent}"
Run Code Online (Sandbox Code Playgroud)

而且它在编译或执行期间不会引发任何异常,但我的 EditText 似乎没有背景,并且当修改变量“editable”时没有任何变化。

我的变量 editable 是一个可绑定变量,定义如下:

@Bindable
boolean editable;

public boolean isEditable() {
    return editable;
}

public void setEditable(boolean editable) {
    this.editable = editable;
    notifyPropertyChanged(BR.editable);
}
Run Code Online (Sandbox Code Playgroud)

有人知道根据布尔值提供可绘制资源吗?

android android-drawable android-databinding

2
推荐指数
1
解决办法
5548
查看次数

数据绑定 - 访问 LiveData 中包含的各个属性

有没有办法用 LiveData 和数据绑定来做这样的事情?

ViewModel 有这个属性:

val weather: LiveData<UnitSpecificCurrentWeatherEntry>
Run Code Online (Sandbox Code Playgroud)

我想在布局中做什么:

<TextView
    android:id="@+id/textView"
    android:text="@{viewmodel.weather.value.someProperty}"... />
Run Code Online (Sandbox Code Playgroud)

这是否可以以任何方式实现,或者我是否必须针对所包含对象的每个属性将 LiveData 中包含的对象拆分为多个对象?

android kotlin android-databinding android-livedata

2
推荐指数
1
解决办法
810
查看次数

旧的 recyclerview 旋转后仍保留为背景

我正在使用带有 mmvm+livedata+数据绑定的 recyclerview。每次旋转后,我都可以看到旧的物品卡在后面作为背景。

我可以看到适配器具有正确数量的项目,并且实际上适配器仅显示和滚动最新数据。但在后台您可以看到旧列表。

代码非常标准和简单 - 带有数据绑定项的简单的 adatper/recyclervyew。

android android-recyclerview android-databinding

2
推荐指数
1
解决办法
259
查看次数

如何通过android中的数据绑定将onTextChanged侦听器添加到包含布局xml

我在将 onTextChanged 添加到包含布局中的 TextInputEditText 时遇到问题。

有一个 base_edittext_view.xml 如下:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">


<android.support.design.widget.TextInputLayout
    android:id="@+id/textInputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColorHint="@color/colorPrimaryText"
    android:background="@drawable/textinputlayout_background"
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/edittextItem"
        style="@style/TextStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/input_border_bottom"
        android:cursorVisible="true"
        android:drawableEnd="@drawable/ic_user"
        android:drawablePadding="@dimen/padding_medium"
        android:gravity="center|left"
        android:hint="@string/email"
        android:inputType="textEmailAddress"
        android:maxLength="50"
        android:paddingBottom="@dimen/padding_medium"
        android:paddingTop="@dimen/padding_medium"
        android:paddingEnd="@dimen/padding_xlarge"
        android:paddingStart="@dimen/padding_medium"
        android:textColor="@color/edittext_text_color"
        android:textColorHint="@color/edittext_hint_text_color"
        android:textSize="@dimen/textsize_medium"
      />

   <!---->

</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

我想向包含 base_edittext_view.xml 的布局添加一个 onTextChanged 侦听器。

android:onTextChanged="@{(text, start, before, count) -> viewModel.onTextChanged(text)}"
Run Code Online (Sandbox Code Playgroud)

添加 onClick 以包含布局没有问题,但对于 onTextChanegd 我不知道如何实现它。

笔记:

     <include
                android:id="@+id/edittextEmail"
                layout="@layout/edittext_email_base_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/padding_xxxxlarge"
                />
Run Code Online (Sandbox Code Playgroud)

android android-layout android-databinding android-include addtextchangedlistener

2
推荐指数
1
解决办法
3371
查看次数

无法为项目启用 DataBinging

当我尝试在新创建的测试项目 ( dataBinding {enable=true}) 中启用数据绑定时,我收到消息

Could not set unknown property 'enable' for object of type com.android.build.gradle.internal.dsl.DataBindingOptions.
Run Code Online (Sandbox Code Playgroud)

数据绑定也没有自动完成功能。(但它是为了app.dataBinding- 但我不明白如何使用它)

我的 app.gradle:

android {
    compileSdkVersion 28
    dataBinding {
        enable = true
    }
    defaultConfig {
        applicationId "com.testapp"
        minSdkVersion 19
        targetSdkVersion 28
    }
    ...
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:design:28.0.0'
}
Run Code Online (Sandbox Code Playgroud)

和项目gradle:

buildscript {
    ext{
        kotlin_version = '1.3.21'
        gradleVersion = '3.1.0'
    }
    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
Run Code Online (Sandbox Code Playgroud)

Android …

android android-gradle-plugin android-databinding

2
推荐指数
1
解决办法
952
查看次数

actionSearch Edittex 上的数据绑定

如何在kotlin中绑定点击actionSearch软键盘按钮的数据@BindingAdapter

我的编辑文本:

<android.support.v7.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:padding="10dp"
        android:text="@{viewModel.text}"
        android:hint="@string/edit_text_hint"
        android:imeOptions="actionSearch"/>
Run Code Online (Sandbox Code Playgroud)

我的视图模型:

class RelationListViewModel: BaseViewModel(){
   //..    
    val text: MutableLiveData<String> = MutableLiveData()
Run Code Online (Sandbox Code Playgroud)

android kotlin android-databinding

2
推荐指数
1
解决办法
606
查看次数

为什么要使用 ViewBinding 而不是 DataBinding?

正如我们在此处阅读的那样,ViewBinding和之间的差异非常小Databinding

  • 数据绑定库只处理使用<layout>标签创建的数据绑定布局。

  • 视图绑定不支持布局变量或布局表达式,因此它不能用于将布局与 XML 中的数据绑定。

开发人员是否应该注意其他任何差异?为什么要创造出如此微小差异的新东西?

有人请解释

android android-databinding android-viewbinding

2
推荐指数
1
解决办法
2114
查看次数

Android 中的 AutoCompleteTextView 或 Spinner 数据绑定

任何人都可以指导我如何使用AppCompatAutoCompleteTextView 的数据绑定来设置适配器并获取值

data-binding autocompletetextview android-layout android-studio android-databinding

2
推荐指数
1
解决办法
3843
查看次数

Change background color of selectedItem in recyclerView android databinding

How can I change the backgroudColor ofselectedItem in recyclerView adapter when I use android databinding?

this is my Adapte,and class CategoyItemClickListener is implemened for handling item clicks :

class ProgramCatAdapter(
    val mContext: Context,
    val mData: MutableList<CategoryResponse>,
    val clickListener: CategoyItemClickListener
) : RecyclerView.Adapter<ProgramCatAdapter.CategoryViewHolder>() {



    override fun onCreateViewHolder(
        parent: ViewGroup,
        viewType: Int
    ): CategoryViewHolder {
        return CategoryViewHolder.from(parent)
    }

    override fun getItemCount(): Int {
        return mData.size
    }

    override fun onBindViewHolder(holder: CategoryViewHolder, position: Int) {
        holder.bind(
            mData[position],
            clickListener,
            position

        )


    }

    fun getItem(position: Int): …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-recyclerview android-databinding

2
推荐指数
1
解决办法
645
查看次数

Android Studio 4.0.1:构建失败:不推荐使用选项“android.databinding.enableV2”

我最近升级到 Android Studio 4.0.1 并且我的构建不断失败并显示以下消息:

不推荐使用选项“android.databinding.enableV2”。当前默认值为“真”。它已从当前版本的 Android Gradle 插件中删除。删除了数据绑定 v1。

我尝试添加:

android.enableExperimentalFeatureDatabinding = false
android.databinding.enableV2=false
Run Code Online (Sandbox Code Playgroud)

到 gradle.properties 和 gradle-wrapper.properties。但都没有解决问题。是否有必须从 build.gradle 添加或删除的内容?

android-build build.gradle android-databinding android-studio-4.0

2
推荐指数
1
解决办法
2087
查看次数