2017-03-24 8 views
0

ビュー(お気に入りボタン)とデータバインディングライブラリでセレクタを使用したいと思います。 これは私のレイアウトです:セレクタビュー付きAndroidデータバインディング

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

、これはselectorです::

<?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ある

<?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> 

、何も、私はアイテムをクリックしたとき。私のコードで何が間違っていますか?

答えて

1

私はこのようなDataBinding膨らませるとき、私Activityにデータとハンドラを設定するのを忘れ:

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

の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 
} 
+0

私は 'BaseObservable'を使用します私のインスタンスクラスでは、この行は必要ありません – ZolkiBy

関連する問題