東邪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 研发一个商城APP制作底部tabbar的时候运行不了,如何解决?
  • ¥15 miniconda安装不了
  • ¥20 python代码编写
  • ¥20 使用MPI广播数据遇到阻塞
  • ¥15 TinyMCE如何去掉自动弹出的“链接…”工具?
  • ¥15 微信支付转账凭证,如何解决
  • ¥15 在win10下使用指纹登录时,界面上的文字最后一个字产生换行现象
  • ¥20 使用AT89C51微控制器和MAX7219驱动器来实现0到99秒的秒表计数,有开始和暂停以及复位功能,下面有仿真图,请根据仿真图来设计c语言程序
  • ¥15 51单片机 双路ad同步采样
  • ¥15 使用xdocreport 生成word