Skip to content

Latest commit

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Android Data Binding 代码实战

本代码用来练习Android Data Binding技术

目前实现

豆瓣电影搜索

利用Data Binding在RecycleView展示电影列表

data-binding-example

Model

publicclassMovieextendsBaseObservable {
privateStringid;
privateStringtitle;
privateStringoriginal_title;
privateStringyear;
privateImagesimages;
privateRatingrating;
@BindablepublicStringgetTitle() {
returntitle;
}
publicvoidsetTitle(Stringtitle) {
this.title = title;
notifyPropertyChanged(BR.title);
}
@BindablepublicStringgetDescription() {
returnthis.original_title + "\n" + this.getYear();
}
publicvoidsetOriginal_title(Stringoriginal_title) {
this.original_title = original_title;
notifyPropertyChanged(BR.description);
}
publicvoidsetYear(Stringyear) {
this.year = year;
notifyPropertyChanged(BR.description);
}
...
}

Layout

<layoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variablename="movie"type="com.aswifter.databinding.model.Movie" />
</data>
...
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:orientation="vertical">
<TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="@{movie.title}"android:textAppearance="@style/TextAppearance.AppCompat.Title"android:textColor="@color/primary_text" />
<TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="2dp"android:text="@{movie.description}"android:textColor="@color/secondary_text" />
<RatingBarstyle="@android:style/Widget.DeviceDefault.Light.RatingBar.Small"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:numStars="10"android:rating="@{movie.rating.average}"android:stepSize="0.5" />
</LinearLayout>
...
</layout>

Binding

Moviemovie = mMovies.get(position);
Glide.with(MovieActitiviy.this)
.load(movie.getImages().getMedium())
.fitCenter()
.into(holder.binding.ivMovie);
holder.binding.setVariable(com.aswifter.databinding.BR.movie, movie);
holder.binding.executePendingBindings();

About

Android Data Binding 代码实战

Resources

Stars

78 stars

Watchers

8 watching

Forks

Releases

Packages

Contributors

Languages