Android – 使用数据绑定的条件文本值

Android – 使用数据绑定的条件文本值,第1张

概述我想有条不紊地将TextView的文本设置为其中一个或另一个. Android数据绑定文档建议您可以在文本是视图模型的属性时有条件地设置文本.例如 android:text="@{user.displayName != null ? user.displayName : user.lastName}" 但有没有办法从strings.xml中设置文本而不是在我的视图模型中添加它?我想要这样的东西 – 我想有条不紊地将TextVIEw的文本设置为其中一个或另一个.

Android数据绑定文档建议您可以在文本是视图模型的属性时有条件地设置文本.例如

androID:text="@{user.displayname != null ? user.displayname : user.lastname}"

但有没有办法从strings.xml中设置文本而不是在我的视图模型中添加它?我想要这样的东西 –

androID:text="@{viewmodel.expanded ? @string/collapse : @string/expand}"

XML看起来有点像这样:

<?xml version="1.0" enCoding="UTF-8"?><layout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:bind="http://schemas.androID.com/apk/res-auto">   <data >      <import type="androID.vIEw.VIEw" />      <variable name="viewmodel" type="com.myproject.viewmodel.TravellerInfoviewmodel" />   </data>   <linearLayout androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:orIEntation="horizontal">      <ImageVIEw androID:layout_wIDth="wrap_content"         androID:layout_height="wrap_content"         androID:layout_gravity="center_vertical"        androID:src="@drawable/expandable_arrow_blue" />      <TextVIEw          androID:layout_wIDth="wrap_content"           androID:layout_height="wrap_content"         androID:text="@{viewmodel.expanded ? @string/taxes_fees_detail : @string/hIDe_taxes_fees_detail}"        androID:textSize="12sp" />   </linearLayout></layout>

这是我的视图模型 –

package com.myproject.viewmodel;imports...public class TravellerInfoviewmodel extends BaSEObservable {  @Bindable  private final TaxDetailsviewmodel taxDetailsviewmodel;  @Bindable  private boolean expanded;  Constructor....  public boolean isExpanded() {    return expanded;  }  public voID setExpanded(boolean expanded) {    this.expanded = expanded;    notifyPropertyChanged(BR.expanded);  }  public voID toggleExpanded() {    setExpanded(!expanded);  }}
解决方法 这是一个修复/解决方法:

>定义您想要条件值的布局的重复Xml定义
>对于每个块,设置其中一个条件值
>根据数据绑定布尔值设置每个Xml定义的可见性

不是理想的解决方案,不是很漂亮..但功能相当 – 并且在临时工作直到找到正确的解决方案.

这是我为androID:textStyle解决它的方法,我有一个特殊的情况要求以粗体显示值.

<variable        name="viewmodel"        type="com.demo.app.someviewmodel"/>        ...    <TextVIEw                androID:visibility="@{ ! viewmodel.boldRow ? VIEw.VISIBLE : VIEw.GONE}"        androID:text="@{viewmodel.currentValue}"        />    <TextVIEw                androID:visibility="@{ viewmodel.boldRow ? VIEw.VISIBLE : VIEw.GONE}"        androID:text="@{viewmodel.currentValue}"        androID:textStyle="bold"        />
总结

以上是内存溢出为你收集整理的Android – 使用数据绑定的条件文本值全部内容,希望文章能够帮你解决Android – 使用数据绑定的条件文本值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1135668.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存