2016-06-15 51 views

回答

5

我得到了答案。 以XML为使用onclick lambda表达式

layout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

<data> 

    <variable 
     name="movie" 
     type="embitel.com.databindingexample.helper.Movie" /> 

    <variable 
     name="handler" 
     type="embitel.com.databindingexample.helper.MyHandlers" /> 

</data> 

<android.support.v7.widget.CardView 
    android:id="@+id/cardview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_marginTop="4dp" 
android:onClick="@{(view)->handler.onItemClicked(view,movie)}" 
app:cardBackgroundColor="@android:color/white" 
    app:cardCornerRadius="4dp"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:padding="8dp"> 

     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="128dp" 
      android:scaleType="centerCrop" 
      app:error="@{@drawable/ic_launcher}" 
      app:imageUrl="@{movie.imageUrl}" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="@{movie.title}" /> 

    </LinearLayout> 

</android.support.v7.widget.CardView> 

然后创建处理程序的等级,

public class MyHandlers { 

public void onItemClicked(View v, Movie movie) { 
    Context context = v.getContext(); 
    context.startActivity(DetailActivity.buildIntent(context, movie)); 
} 

}

,那么你需要设置的处理程序,其中,XML是作为iflated,

binding.setHandler(new MyHandlers()); 

你也可以把处理方法中的任何类。在这种情况下,您必须将该类名称设置为处理程序。

+0

如何在不使用lambdas的情况下做到这一点? –

相关问题