I am a
Fluent in
- Chinese,
- Japanse and
- English
A comprehensive tutorial for Android Data Binding
Home Page: http://liangfei.me
License: MIT License
I am a
Fluent in
在 AvatarView.java 的 getDrawableFrom() 方法中发现执行到以下代码会出错:
bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight(),Bitmap.Config.ARGB_8888);
这个代码在运行时会抛出异常:
java.lang.IllegalArgumentException: width and height must be > 0
每次进入viewpage+fragment后 第二次进入某个fragment 界面数据全无 试过很多方法无用 最后只能viewpage层面是做缓存 但那样耗内存 不是理想的解决方法
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
编译可以通过但是没有生成代码,是否是上面的配置造成的?
我想问一下这个是系统自己生成的吗?
ContractBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_custom_binding);
因为自己写的话是这样,这个类应该是系统生成的吧?需要手动设置名称吗?
ViewDataBinding viewDataBinding = DataBindingUtil.setContentView(this, R.layout.activity_custom_binding);
AvatarView 这个类是在 Attribute Setters 例子中出现的,在 activity_attribute_setters.xml 文件中能够发现它,但是在代码中却没有这个类
能以在android:layout_width="match_parent" 這種用data binding 的方式去設定dp嗎?
android:layout_width="@{user.width}"
動態的去修改??
原话:修改 BasicActivity 的 onCreate 方法,用 DatabindingUtil.setContentView() 来替换掉 setContentView(),然后创建一个 user 对象,通过 binding.setUser(user) 与 variable 进行绑定。
那不同的activity应该会使用不一样的对象,比如登陆就有可能使用user对象,而一个详情界面就使用一个
从服务器取回来的Detail对象,但是都继承自BaseActivity,设置user对象不对吧?
我的Android Studio版本号:2.3.3
Gradle 版本号:3.3
compileSdkVersion 26
buildToolsVersion "26.0.1"
minSdkVersion 16
targetSdkVersion 26
@BindingAdapter({"bind:imageUrl", "bind:error"})
public static void loadImage(ImageView view, String url, Drawable error) {
Picasso.with(view.getContext()).load(url).error(error).into(view);
}
我这样写提示TextView没有imageUrl方法报错。
你提到“其实在此之前,已经有些第三方的框架(RoboAndroid) 可以支持 MVVM 模型,无耐由于框架的侵入性太强,导致一直没有流行起来。”。 我是RoboBinding的贡献者之一,我无意看到你的这个页面。你能解释你说的侵入性太强吗?或者说,Android Data Binding比RoboBinding侵入性低吗?你如果能说说你的看法,我很感谢。
README里的所有示例代码链接好像都失效了
Cannot find the setter for attribute 'app:actualImageUri' with parameter type java.lang.String
但是直接写字符串进去是没有错的
build failed.
the error is Error parsing XML: not well-formed (invalid token)
我做这个的时候,编辑器报红线,比如说在xml里面使用三目运算符,但是结果能运行。楼主知道这个怎么解决么
@LyndonChin
has any sample about Recyclerview's data binding ?
<com.liangfeizc.databindingsamples.attributesetters.UserView
应该是NameCard吧?
Hey developers, How can I use data binding in my application because I am new to data binding concept ?
I have an application module and one android lib. Module which has all the entites those are used in app module l..
So how can I use data binding in my app with lib. Module..
Which also include dynamic inflation of view based on parameter in some of the entities in library module
您好,想请问下。
如果我的 debug
BuildType 会在 Package Name 的最后加上 .debug
后缀。
或是不同 Flavor 会在 Package Name 后面加上其他的后缀,像是付费版和免费版的区别
这样子是否还能使用 DataBinding?
如果可行定义 Variable 要如何定义呢?
type="com.liangfeizc.databindingsamples.basic.User"
像是 type 这边似乎只能写死某一 Package?
例如
android:layout_height="@{myView.height}"
这样直接写时编译报错:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
java.lang.RuntimeException: Found data binding errors.
***/ data binding error ***msg:Cannot find the setter for attribute 'android:layout_height' with parameter
type float.
file:../example.xml loc:29:45 - 29:63 ***\ data binding error ***
求指点
您好,很感谢您的开源库,最近在学习的时候发现无论是使用您的项目或者自己去是实现,这行代码总是报错,想请教下这个是为什么?哪里出了问题?
public class MyHandlers {
public void onClickFriend(View view) { ... }
public void onClickEnemy(View view) { ... }
}
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.lastName}"
android:onClick="@{user.isFriend ? handlers.onClickFriend : handlers.onClickEnemy}"/>
你好,在对一个View�设置点击事件时,onClick 只把当前的View作为传递参数,如果要传多个参数,请问要怎么写?
下载并编译,发生错误:
D:\me\project_others\MasteringAndroidDataBinding-master\app\src\main\res\layout\view_stub.xml
Error:(14, 27) No resource type specified (at 'text' with value '@{user.firstName}').
Error:(20, 27) No resource type specified (at 'text' with value '@{user.lastName}').
android studio : 1.5
classpath 'com.android.tools.build:gradle:1.5.0'
classpath "com.android.databinding:dataBinder:1.0-rc1"
include 的使用中的button 命名activity传入的是小写的to toast ,为什么运行后显示的是大写的 TO TOAST
为方便交流,我建了一个 QQ 群,感兴趣的同学可以进来聊聊
data bind view tag isn't correct on view:null
布局文件
<data>
<variable
name="user"
type="org.xxx.bean.User" />
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/line"
android:gravity="center"
android:orientation="vertical"
tools:context="org.xxx.module.invite.InviteActivity">
<TextView
android:id="@+id/tv_currentUserName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/x16"
android:gravity="center"
android:text="@{user.nick}"
android:textColor="@color/black_p50" />
<include layout="@layout/fragment_other_plus" />
</LinearLayout>
在Activity类中
@OverRide
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityInviteBinding dataBinding = DataBindingUtil.setContentView(this, R.layout.activity_invite);
User currentUser = User.getCurrentUser(getApplicationContext(), User.class);
dataBinding.setUser(currentUser);
}
您好,请问类似这种的
<com.cn.custom.TableView
android:id="@+id/item1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
因为TableView的业务非常复杂,所以绑定的数据需要在tableView的layout文件中。这样的话又如何跟这个id对应起来呢
这是我的代码,测试正常运行
<data classs="ActivityDataBinding">
<variable
name="user"
type="com.kaelthas.demo.bean.User"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.userName}"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.passWord}"/>
<Button
android:id="@+id/btn"
android:text="点击改变信息"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/test"/>
</LinearLayout>
</LinearLayout>
我没有重名的另一个View,但是不导包的话会报错,并且无法联想GONE,VISIBLE等,导包后都正常
<data> <import type="android.view.View"/> </data>
FAILED
FAILURE: Build failed with an exception.
Compilation failed; see the compiler error output for details.
# * Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
范例中没有演示如何绑定事件。我参考了``,却没法编译通过。报错:
Listener class android.view.View.OnClickListener with method onClick did not match signature of any method handlers::onClickFriend
希望范例中可以加入事件绑定。
比如我要通过一个List对象来动态添加radioGroup中的RBtn?
我在fragment的布局中绑定点击事件:
<ImageView
android:id="@+id/iv_user_head_pic"
android:layout_width="60dp"
android:layout_height="60dp"
android:onClick="@{() -> userFragmentViewModel.getPresenter().onClick(1)}"
android:src="@drawable/home_user_place_holder"
app:imageUrlCircle="@{userFragmentViewModel.getUserHeadPicUrl()}" />
它在生成的FragmentBinding中报错:
// userFragmentViewModel != null
boolean userFragmentViewMode = false;
// userFragmentViewModel.getPresenter() != null
boolean UserFragmentViewMode1 = false;
// userFragmentViewModel
com.msc.grus_japonenis.main.userfragment.UserFragmentViewModel userFragmentViewMode = mUserFragmentViewMod;
// userFragmentViewModel.getPresenter()
com.msc.grus_japonenis.main.userfragment.UserFragmentPresenter userFragmentViewMode1 = null;
userFragmentViewMode = (userFragmentViewMode) != (null);
if (userFragmentViewMode) {
新建的userFragmentViewMode 和 判空用的 变量重名。
同样的代码在activity中就是ok的,会产生两个不一样的变量名。
而且FragmentBinding是不能修改
如题,步骤没有错误的。
但是ActivityLoginBinding 这个类已经生成可以使用了,
在 activity_attribute_setters.xml 文件中,这样使用了 NameCard 类:
<com.liangfeizc.databinding.view.NameCard
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginEnd="@dimen/largePadding"
android:layout_marginLeft="@dimen/largePadding"
android:layout_marginRight="@dimen/largePadding"
android:layout_marginStart="@dimen/largePadding"
android:gravity="center"
app:age="27"
app:firstName="@{@string/firstName}"
app:lastName="@{@string/lastName}"/>
经过我的测试发现,只有 app:age 属性能够使用,app:firstName 属性和 app:lastName 属性会报错。
我将 style.xml 中的 NameCard style 改为如下形式就可以正常使用了:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.