Android Data Binding Recyclerview

Using Recyclerview with the new Android Data Binding framework
Alternatives To Android Data Binding Recyclerview
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Mvvmlight1,683
6 years ago14Java
A toolkit help to build Android MVVM Application
Neutronium1,316385 months ago16September 11, 202092mitC#
🚀 Build .NET desktop applications using HTML, CSS and javascript.
Android Data Binding Recyclerview572
5 years ago10apache-2.0Java
Using Recyclerview with the new Android Data Binding framework
Android Mvvm437
5 years ago16apache-2.0Java
MVVM on Android using RxJava and Data Binding
Rxviewmodel370
93 years ago24October 31, 20179mitSwift
ReactiveViewModel-esque using RxSwift
Mvvmcross Samples328
4 months ago33ms-plC#
Tutorials and samples for MvvmCross: The .NET MVVM framework for cross-platform solutions.
Android Viewmodelbinding312
6 years ago7Java
A lightweight library aiming to speed up Android app development by leveraging the new Android Data Binding together with the Model-View-ViewModel design pattern.
Tictactoe Mvvm238
4 years ago1Java
Sample android application used to learn the Model View View Model pattern and DataBinding in Android
Todolist Mvvm230
6 years ago3mitSwift
Sample application using MVVM in Swift
Mv2m186
7 years ago1apache-2.0Java
Android MVVM lightweight library based on Android Data Binding
Alternatives To Android Data Binding Recyclerview
Select To Compare


Alternative Project Comparisons
Readme

Android Data Binding + RecyclerView

Using Recyclerview with the new Android Data Binding framework.

demo

How to start?

Just clone this repository and start playing with it! If you want to use some parts of this repository in your project read below.

Change your gradle file

  • In your main build.gradle add:
classpath 'com.android.tools.build:gradle:1.5.0'
  • In your app build.gradle add:
    dataBinding {
        enabled = true
    }

Modify your layout

Remember to use your classes and packages ;-).

<!-- layout.xml -->
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <data>
              <variable
                  name="usersViewModel"
                  type="net.droidlabs.mvvmdemo.viewmodel.UsersViewModel"/>
    </data>

<android.support.v7.widget.RecyclerView
            android:id="@+id/activity_users_recycler"
            android:scrollbars="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:items="@{usersViewModel.users}"
            app:itemViewBinder="@{usersViewModel.itemViewBinder}"
            />
</layout>

Modify your activity

	// your activity
	@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        usersViewModel = new UsersViewModel();
        usersViewModel.users.add(new SuperUserViewModel(new User("Android", "Dev")));

        binding = DataBindingUtil.setContentView(this, R.layout.users_view);
        binding.setUsersViewModel(usersViewModel);
        binding.activityUsersRecycler.setLayoutManager(new LinearLayoutManager(this));
    }

Modify your ViewModel class

    public class UsersViewModel extends BaseObservable
    {
        public ObservableArrayList<UserViewModel> users;

        public ItemBinder<UserViewModel> itemViewBinder()
            {
                return new ItemBinderBase<UserViewModel>(BR.user, R.layout.item_user);
            }
    }

Some details

Your ViewModel (UsersViewModel in my example) should have field of ObservableArrayList type which will be bind to recycler view.

Next thing is ItemViewBinder. This class is used in BindingRecyclerViewAdapter for creating ViewHolders and it's item views bindings. In my example I've created CompositeItemBinder in order to support two different item types with separate layouts. If you want to display list with one data type you can use ItemBinderBase:

	public ItemBinder<YourClass> itemViewBinder()
    {
          return new ItemBinderBase<YourClass>(BR.your_variable_name, R.layout.your_item_layout);
    }

Please look at UsersView.java and UsersViewModel.java if something is unclear.

Popular Bindings Projects
Popular Viewmodel Projects
Popular Libraries Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Java
Bindings
Viewmodel