東邪HUX 2018-01-12 07:41 采纳率: 0%
浏览 2193
已采纳

如何在include的xml布局中使用观察者模式对ImageView显示的图片进行修改

主布局
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">

<data>
    <import type="android.databinding.ObservableMap"/>
    <import type="com.village.crops.utils.DataBindUtil"/>
    <variable
        name="main"
        type="ObservableMap&lt;String,Integer&gt;"/>

    <variable
        name="click"
        type="com.village.crops.activity.MainActivity"/>

    <variable
        name="imageUtil"
        type="DataBindUtil"/>

    <variable
        name="imageUrl"
        type="Integer"/>
</data>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/colorWhite"
    android:orientation="vertical" >


    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
    </FrameLayout>

    <include
        android:id="@+id/village_base_bottom"
        layout="@layout/village_bottom"
        bind:main="@{main}"
        bind:click="@{click}"
        bind:imageUtil="@{imageUtil}"
        bind:imageUrl="@{imageUrl}"/>

</LinearLayout>

引用布局
<?xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">

<data>
    <import type="android.databinding.ObservableMap"/>
    <import type="com.village.crops.utils.DataBindUtil"/>
    <variable
        name="main"
        type="ObservableMap&lt;String,Integer&gt;"/>

    <variable
        name="click"
        type="com.village.crops.activity.MainActivity"/>

    <variable
        name="imageUtil"
        type="DataBindUtil"/>

    <variable
        name="imageUrl"
        type="Integer"/>
</data>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@color/colorWhite"
    android:gravity="center_vertical">

    <LinearLayout
        android:id="@+id/layout_home"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_weight="1"
        android:orientation="vertical"
        android:onClick="@{click.onClick}">

        <ImageView
            android:id="@+id/img_home"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src='@{main["imgid"]}'
            bind:imageUrl="@{imageUrl}"/>

        <TextView
            android:id="@+id/text_home"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/VillageTextTheme"
            android:text="@string/home_home"
            android:textColor='@{main["textColor"]}'/>

    </LinearLayout>

</LinearLayout>

Main代码
activityMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main);

ObservableArrayMap resourceMap = new ObservableArrayMap<>();
resourceMap.put("imgid",R.mipmap.icon_home_car_sel);
resourceMap.put("textColor", Color.RED);

   activityMainBinding.setClick(this);
   activityMainBinding.setMain(resourceMap);
  • 写回答

1条回答 默认 最新

  • devmiao 2018-01-12 11:07
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵