标签: android-databinding

未生成数据绑定类

我在我的项目中使用数据绑定,当使用时<layout>,<data>我的xml绑定类中没有生成.

例如,我有activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>    </data>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </RelativeLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

现在,如果我ActivityMainBinding在我的活动/片段中写入,则显示该类不可用的错误.但是<variable>在我的xml文件中包含它后,它能够生成ActivityMainBinding类.

Android Studio:2.1.3
Classpath:com.android.tools.build: grad :2.1.3
minSdkVersion 16
targetSdkVersion 24
buildToolsVersion 24.0.0

data-binding android android-databinding

70
推荐指数
9
解决办法
4万
查看次数

使用数据绑定设置视图可见性

尝试设置View使用自定义变量的可见性,但发生错误:Identifiers must have user defined types from the XML file. visible is missing it.是否可以使用数据绑定设置视图可见性?谢谢.

<data>
    <variable
        name="sale"
        type="java.lang.Boolean"/>
</data>

<FrameLayout android:visibility="@{sale ? visible : gone}"/>
Run Code Online (Sandbox Code Playgroud)

android android-databinding

59
推荐指数
4
解决办法
4万
查看次数

我想在android,Data Binding Api中为TextView连接两个字符串

我使用DataBindingApi来设置android布局中的视图.这是我的布局.

layout.xml

<?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android">
  <data>
    <variable name="user" type="testing.sampleapp.com.sampleapp.User"/>
  </data>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@{ "Hello " + user.firstName}"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我希望TextView显示Hello UserName.如何使用数据绑定api实现此目的.

data-binding android android-layout android-databinding

57
推荐指数
8
解决办法
4万
查看次数

Kotlin自定义属性数据绑定

我试图 在我的Kotlin项目中使用Android DataBinding库设置自定义属性,如下所示:

布局

<ImageView
    android:id="@+id/imgView”
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_gravity="center"
    android:adjustViewBounds="true"
    app:imageUrl="@{segment.url}"/>
Run Code Online (Sandbox Code Playgroud)

  class Utils {
        companion object {
            @BindingAdapter("bind:imageUrl")
            @JvmStatic
            fun loadImage(view: ImageView, url:String) 
            {Picasso.with(view.context).load(url).error(R.drawable.error).into(view)}
    }       
Run Code Online (Sandbox Code Playgroud)

我得到的运行时错误是:

in中的BindingAdapter不是静态的,需要使用从DataBindingComponent检索的对象.如果不使用带有DataBindingComponent的通胀方法,请使用DataBindingUtil.setDefaultComponent或使所有BindingAdapter方法保持静态.

任何解决它的指针?

这仅适用于自定义属性.其余的数据绑定工作正常

kotlin android-databinding

57
推荐指数
3
解决办法
1万
查看次数

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

我跟着数据绑定文件自定义绑定适配器用于图像加载从官方Android开发者网站: http://developer.android.com/tools/data-binding/guide.html

成功编译代码后,我得到一个警告:

Warning:Application namespace for attribute bind:imageUrl will be ignored.
Run Code Online (Sandbox Code Playgroud)

我的守则如下:

@BindingAdapter({"bind:imageUrl"})
    public static void loadImage(final ImageView imageView, String url) {
        imageView.setImageResource(R.drawable.ic_launcher);
        AppController.getUniversalImageLoaderInstance().displayImage(url, imageView);
    }
Run Code Online (Sandbox Code Playgroud)

为什么会产生此警告?

还附上了截图...在此输入图像描述

android android-layout android-studio android-databinding

56
推荐指数
2
解决办法
2万
查看次数

如何使用DataBinding将Image资源设置为ImageView

我们如何在android中使用数据绑定将图像资源放入ImageView

  <ImageView
            android:id="@+id/is_synced"
            android:src="@{model.pending ? @mipmap/pending: @mipmap/synced}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

如果pending为true,我想要一个图像,如果pending为false,我想要另一个图像.但它显示错误.我如何实现此功能?

xml android android-databinding

53
推荐指数
6
解决办法
5万
查看次数

android数据绑定的优缺点是什么?

我和我的同事都有Web应用程序的MVVM经验,而我们是本机android开发的新手.现在我们对android数据绑定有相反的看法 - 我不喜欢它的粉丝.

我的论点:

  • 减少样板代码,从而减少样板代码
    • 耦合较少
    • 更强的可读性
  • 功能强大,易于实现自定义属性和自定义视图
  • 甚至比findViewById更快(细节)

他的论点:

  • 自动生成的.class会增加应用程序大小.
  • 更难调试

我做了一些调查,但关于它的讨论并不多.现在我想收集android数据绑定的优缺点.

讨论的方面包括但不限于:

  • 单元测试
  • 应用程序大小
  • 性能
  • 学习曲线
  • 可读性
  • 耦合

data-binding android mvvm android-databinding

51
推荐指数
3
解决办法
9655
查看次数

数据绑定 - safeUnbox警告

将AS gradle版本升级到2.3.0后,数据绑定会遇到警告:

警告:selectMap [index]是一个盒装字段但需要取消装箱才能执行selectMap [index]?@android:颜色/白色:@android:颜色/透明.这可能会导致NPE,因此数据绑定将安全地取消它.您可以更改表达式并使用safeUnbox()显式地包装selectMap [index]以防止出现警告

selectMap是一个ObservableMap,然后我搜索这个警告,但只进行了一些讨论而没有修复它

Android Studio 2.3.0-alpha1:Databinding + int拆箱会导致编译错误

数据绑定 - API 15-18上的数据对象为空

我按照链接的方式,修改selectMap[index]safeUnbox(selectMap[index])但语法错误.

所以任何人都知道如何修复此警告?


编辑:这是xml文件代码

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

<data class="SupportCountryViewHolderBinding">

    <variable
        name="viewModel"
        type="com.goodarc.care_about.activity.account.support_country.SupportCountryHolderViewModel" />

    <variable
        name="dataSource"
        type="com.goodarc.care_about.module.assets_file.SupportCountry" />

    <variable
        name="selectMap"
        type="android.databinding.ObservableMap&lt;Integer, Boolean&gt;" />

    <variable
        name="index"
        type="int" />
</data>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@{selectMap[index] ? @android:color/white : @android:color/transparent}"
    android:onClick="@{(v) -> viewModel.onItemSelectListener(selectMap, index)}"
    android:orientation="vertical"
    android:padding="20dp">

    <TextView
        style="@style/TitleLabel2"
        android:layout_gravity="center_vertical|start"
        android:text="@{dataSource.display}"
        android:textColor="@{selectMap[index] ? @android:color/black : @android:color/white}"
        tools:text="Taiwan (+886)" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

构建成功,但警告出来(我在上面).

data-binding android warnings android-gradle-plugin android-databinding

48
推荐指数
5
解决办法
3万
查看次数

数据绑定Android - 类型参数T具有不兼容的上限:ViewDataBinding和MainActivity

我正在使用Android Studio 2.0 Preview 4.我使用的是Android SDK工具25 rc1.无论清理/重建项目多少次,此错误都会持续存在.文件 - >无效缓存并重新启动也不起作用.我无法运行最基本的数据绑定示例.

build.gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.example.chiragshenoy.myapplication"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    dataBinding {
        enabled = true
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
}
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

package com.example.chiragshenoy.myapplication;

import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity …
Run Code Online (Sandbox Code Playgroud)

data-binding android android-databinding

47
推荐指数
5
解决办法
2万
查看次数

使用srcCompat进行数据绑定

我正在使用Support Lib v23.2中的新向量drawable支持app:srcCompat并尝试通过数据绑定设置其drawable.

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

<data>
    <variable
        name="mediaPojo"
        type="in.ishaan.pika.data_binding.MediaPojo"/>
</data>

<RelativeLayout
    android:background="@color/black"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <VideoView
        ... />

    <ImageView
        ...
        app:srcCompat="@{mediaPojo.isPlaying ? @drawable/ic_pause_24dp : @drawable/ic_play_arrow_24dp}"
    />

    <ProgressBar
        .../>
</RelativeLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

试图建立,工作室抛出:

错误:(33,30)无法找到参数类型为android.graphics.drawable.Drawable的属性'app:srcCompat'的setter.

android android-support-library android-databinding

47
推荐指数
2
解决办法
9421
查看次数