【问题标题】:Android DataBinding with selector view带有选择器视图的 Android 数据绑定
【发布时间】:2017-08-18 00:14:51
【问题描述】:

我想将选择器与视图(收藏按钮)和数据绑定库一起使用。 这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<layout ...>
<data>
    <variable
            name="obj"
            type="com.zor.dev.simplebelnewsreader.instance.News"/>

    <variable
            name="handler"
            type="com.zor.dev.simplebelnewsreader.handler.Handlers"/>
</data>
<View
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:id="@+id/selectorButton"
            android:onClick="@{() -> handler.setFavorite(obj)}"
            android:background="@drawable/fav_button2"
            app:selected="@{obj.favorite}"
            android:layout_marginStart="20dp"/>

这是我的Handler

 public void setFavorite(News news) {
    news.setFavorite(!news.isFavorite());
}

这是selector:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
      android:state_selected="true"
      android:drawable="@drawable/ic_star_purple_a400_24dp"
      >
</item>
<item android:drawable="@drawable/star_favorite_not">

</item>

当我单击项目时,什么也没有。我的代码有什么问题?

【问题讨论】:

    标签: java android data-binding android-databinding


    【解决方案1】:

    当像这样膨胀DataBinding 时,我只忘记在我的Activity 中设置数据和处理程序:

    binding.setObj(data);
    binding.setHandler(new Handlers());
    

    【讨论】:

      【解决方案2】:

      XML:

      <View
                  android:layout_width="32dp"
                  android:layout_height="32dp"
                  android:id="@+id/selectorButton"
                  android:onClick="@{() -> handler.setFavorite(obj)}"
                  android:background="@drawable/fav_button2"
                  app:selected="@={obj.favorite}"
                  android:layout_marginStart="20dp"/>
      

      处理程序:

      public void setFavorite(News news) {
          news.setFavorite(!news.isFavorite());
          notifyPropertyChanged(BR.favorite); //'favorite' is the boolean variable name
      }
      

      【讨论】:

      • 我在实例类中使用BaseObservable,这一行不需要
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      相关资源
      最近更新 更多