Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/radzio/android-data-binding-recyclerview

Using Recyclerview with the new Android Data Binding framework
https://github.com/radzio/android-data-binding-recyclerview

Last synced: 1 day ago
JSON representation

Using Recyclerview with the new Android Data Binding framework

Lists

README

        

# Android Data Binding + RecyclerView
Using Recyclerview with the new Android Data Binding framework.

![demo](https://cloud.githubusercontent.com/assets/469111/7898771/36df1504-070b-11e5-95d5-d8ca0aaf50dd.gif)

## 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:

```gradle
classpath 'com.android.tools.build:gradle:1.5.0'
```

- In your app build.gradle add:


```gradle
dataBinding {
enabled = true
}
```

### Modify your layout

Remember to use your classes and packages ;-).

```xml






```

### Modify your activity

```java
// 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

```java
public class UsersViewModel extends BaseObservable
{
public ObservableArrayList users;

public ItemBinder itemViewBinder()
{
return new ItemBinderBase(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:

```java
public ItemBinder itemViewBinder()
{
return new ItemBinderBase(BR.your_variable_name, R.layout.your_item_layout);
}
```

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