Android数据绑定(bind)和三元运算符(?:) to get drawables

标签 android data-binding android-databinding

我正在尝试根据函数是假还是真来获取可绘制对象。但我做错了什么。所以任何帮助表示赞赏

            <ImageView
              android:layout_width="24dp"
              android:layout_height="24dp"
              android:onClick="@{() -> handler.onVoteClicked(gameFeed.uid)}"
              android:src="@{() -> handler.existInList(feed.ratings,feed.uid) ? @drawable/ic_star_border : @drawable/ic_star}"
              android:layout_gravity="center_vertical"/>

这是我试图从我的处理程序中调用的函数。

  public boolean existInList(Map<String,Boolean> ratings, String userId) {
    for (Map.Entry<String, Boolean> entry : ratings.entrySet()) {
      if(entry.getValue().equals(userId)) {
       return true;
      }
    }
    return false;
  }

添加了我得到的错误

Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
  ****/ data binding error ****msg:Cannot find the proper callback class 
for android:src. Tried android.graphics.drawable.Drawable but it has 4 abstract methods, should have 1 abstract methods. file:/Users/brahim/ProjectNinjo/app/src/main/res/layout/adapter_feed_row.xml loc:108:33 - 108:135 ****\ data binding error ****

更新

我注意到它可以抓取可绘制对象。但是它在调用该函数时遇到问题。我猜我不能从三元运算符调用函数,或者我以错误的方式调用函数

最佳答案

您使用了错误的语法。 () -> ... 是回调语法,当事件发生时执行。

示例:android:onClick="@() -> callback.onClick()"

相反,您只需要一个像这样的简单绑定(bind)表达式:

android:src="@{handler.existInList(feed.ratings,feed.uid) ? @drawable/ic_star_border : @drawable/ic_star}"

关于Android数据绑定(bind)和三元运算符(?:) to get drawables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38416471/

相关文章:

android - onClick 在 android 数据绑定(bind)中的 mvvm 中不起作用

android - android 上的双 SPP 蓝牙连接

android - 协程 : Can't return value after finish work

android - 数据绑定(bind)适配器。如何通过 id 引用获取 View ?

c# - ListView 内的 Xamarin Forms 命令绑定(bind)不起作用

android - 数据绑定(bind)错误:(421, 17)错误: variable xyzViewHand is already defined in method _internalCallbackOnClick(int,查看)

android - 查看绑定(bind)不适用于 "Include": incompatible types: ProgressBarLayoutBinding cannot be converted to ViewDataBinding

android - 是否可以通过编程方式从 Firebase Analytics 控制台收集数据?

java - GPS状态监听器

apache-flex - 带有图像的 Flex List ItemRenderer 在滚动时丢失 BitmapData