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
- Host: GitHub
- URL: https://github.com/radzio/android-data-binding-recyclerview
- Owner: radzio
- License: apache-2.0
- Created: 2015-05-30T13:40:24.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2018-06-24T16:02:56.000Z (almost 6 years ago)
- Last Synced: 2024-05-02T01:04:34.917Z (about 2 months ago)
- Language: Java
- Size: 114 KB
- Stars: 568
- Watchers: 25
- Forks: 97
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-github-android-ui - android-data-binding-recyclerview - 配有Android数据绑定的RecyclerView (RecyclerView)
- awesome-github-android-ui - android-data-binding-recyclerview - 配有Android数据绑定的RecyclerView (RecyclerView)
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.