android 使用泛型的数据绑定 java
android data bindings using generics java
我是 android 数据绑定的新手,我想在数据绑定布局中使用泛型类型,
请问可以吗?
JAVA activity
public class SearchableActivity<R> extends ErpActivity<R extends MasterPojo>
{
public void callToBack(R r){
}
}
XML布局
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="task"
type="R extends Masterpojo" />
<variable
name="activity"
type="com.cloud9.erp.activities.SearchableActivity<R>" />
</data>
<TextView
style="@style/valued_style"
android:onClick="@{() -> activity.callToBack(task)}"
android:text="Erp"
android:textColor="@android:color/black"
android:textSize="@dimen/fab_margin" />
</layout>
是的,可以为您的通用类型做一个 scape:
<data>
<variable
name="activity"
type="com.cloud9.erp.activities.SearchableActivity<R>" />
</data>
请记住,Android Studio
仍会显示 "Cannot resolve symbol" 错误,但您的布局文件会编译。
此外,这不是最好的实现方式,您应该使用 Handlers 进行此类操作:
public class MyHandlers {
public void onClickFriend(View view) { ... }
}
然后,在您的 XML:
中使用它
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="handlers" type="com.example.Handlers"/>
<variable name="user" type="com.example.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="@{user.firstName}"
android:onClick="@{handlers::onClickFriend}"/>
</LinearLayout>
</layout>
我是 android 数据绑定的新手,我想在数据绑定布局中使用泛型类型, 请问可以吗?
JAVA activity
public class SearchableActivity<R> extends ErpActivity<R extends MasterPojo>
{
public void callToBack(R r){
}
}
XML布局
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="task"
type="R extends Masterpojo" />
<variable
name="activity"
type="com.cloud9.erp.activities.SearchableActivity<R>" />
</data>
<TextView
style="@style/valued_style"
android:onClick="@{() -> activity.callToBack(task)}"
android:text="Erp"
android:textColor="@android:color/black"
android:textSize="@dimen/fab_margin" />
</layout>
是的,可以为您的通用类型做一个 scape:
<data>
<variable
name="activity"
type="com.cloud9.erp.activities.SearchableActivity<R>" />
</data>
请记住,Android Studio
仍会显示 "Cannot resolve symbol" 错误,但您的布局文件会编译。
此外,这不是最好的实现方式,您应该使用 Handlers 进行此类操作:
public class MyHandlers {
public void onClickFriend(View view) { ... }
}
然后,在您的 XML:
中使用它<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="handlers" type="com.example.Handlers"/>
<variable name="user" type="com.example.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="@{user.firstName}"
android:onClick="@{handlers::onClickFriend}"/>
</LinearLayout>
</layout>