2017-03-24 4 views
0

보기 (즐겨 찾기 버튼) 및 데이터 바인딩 라이브러리에서 선택기를 사용하고 싶습니다. 이 내 레이아웃입니다 :선택기보기로 Android 데이터 바인딩

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

그리고 아무것도. 내 코드에서 무엇이 잘못 되었습니까?

I는이 같은 DataBinding 팽창 할 때 내 Activity 데이터와 핸들러를 설정하는 것을 잊지

답변

1

:

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

관련 문제