From 85813f9e1fefff30de97e9def4a6feb95d1dbf51 Mon Sep 17 00:00:00 2001 From: Belin Wu Date: Fri, 25 Jan 2019 17:39:23 +0800 Subject: [PATCH] Prepare v0.2.0 release --- README.md | 66 +++++++++++++++---- core/build.gradle | 2 +- paging/build.gradle | 2 +- sample/build.gradle | 5 +- .../samples/modapter/MainActivity.java | 12 ++-- 5 files changed, 64 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 297e26f..17f1703 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,16 @@ Modular adapter for Android RecyclerView. **DO NOT USE THIS LIBRARY IN PRODUCTION UNTIL V1.0.0 IS RELEASED.** # Installation + Add the following dependency to your `build.gradle` file: ```groovy dependencies { - implementation 'com.samelody.modapter:modapter:0.1.0' + // required, core + implementation 'com.samelody.modapter:modapter-core:0.2.0' + + // optional, support android paging library + implementation 'com.samelody.modapter:modapter-paging:0.2.0' } ``` @@ -22,11 +27,11 @@ dependencies { ```java // create a ModularAdapter object instead of creating new Subclass of RecyclerView.Adapter. -ModularAdapter adapter = new ModularAdapter(); -recyclerView.setAdapter(adapter); +ModularAdapter adapter = new ModularAdapter<>(); +listView.setAdapter(adapter); // register item metadata to manager -ItemManager manager = adapter.getManager(); +ItemManager manager = adapter.getManager(); manager.register(R.layout.item_gallery_image, ImageViewHolder.class) .register(R.layout.item_gallery_date, DateViewHolder.class); @@ -35,32 +40,67 @@ List list = new ArrayList<>(); list.add(new ImageItem()); list.add(new DateItem()); -// Setup list and notify -manager.setList(list); +// submit list +manager.submitList(list); + +// notify adapter if no async differs used adapter.notifyDataSetChanged(); ``` -# Docs +## AsyncDiffer + +The `ItemManager` not enable async diffing by default. + +You can setup `AsyncDiffer` by your choice. The setting API is + +`ItemManager#setDiffer()`. + +The implemented async differs are following: + +- `NonAsyncDiffer`: The non implementation. (default used) +- `ListAsyncDiffer`: The `AsyncListDiffer` implementation. +- `PagedAsyncDiffer`: The `AsyncPagedListDiffer` implementation. + +### Using Async Differ + +```java +// set differ +manager.setDiffer(new ListAsyncDiffer<>()); + +// submit list +manager.submitList(list); + +// not need to call adapter.notify APIs +``` ## ItemManager -All APIs are encapsulated in `ItemManager` interface returned by `ModularAdapter#getItemManager()`. +All APIs are encapsulated in `ItemManager` interface returned by `ModularAdapter#getManager()`. ```java // register via layoutId and holderClass -ItemManager register(@LayoutRes int layoutId, Class holderClass); +ItemManager register(@LayoutRes int layoutId, Class holderClass); // register via ItemMetadata -ItemManager register(ItemMetadata metadata); +ItemManager register(ItemMetadata metadata); // unregister via layoutId -ItemManager unregister(@LayoutRes int layoutId); +ItemManager unregister(@LayoutRes int layoutId); // setup the data list -ItemManager setList(List list); +ItemManager submitList(List list); // Gets the item with given position -T getItem(int position); +E getItem(int position); + +// Gets current displayed list +List getCurrentList(); + +// Gets item count +int getItemCount(); + +// setup async differ +ItemManager setDiffer(AsyncDiffer differ); ``` # License diff --git a/core/build.gradle b/core/build.gradle index 6bbf8ed..3896bcb 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -8,7 +8,7 @@ pubspec.artifactId = 'modapter-core' pubspec.repo = 'maven' pubspec.name = 'Modapter' pubspec.description = 'Modular adapter for Android RecyclerView.' -pubspec.version = "0.2.0-alpha1" +pubspec.version = "0.2.0" pubspec.versionCode = 2 pubspec.url = 'https://github.com/samelody/modapter' pubspec.gitUrl = 'https://github.com/samelody/modapter.git' diff --git a/paging/build.gradle b/paging/build.gradle index 7675e4f..84fd93d 100644 --- a/paging/build.gradle +++ b/paging/build.gradle @@ -8,7 +8,7 @@ pubspec.artifactId = 'modapter-paging' pubspec.repo = 'maven' pubspec.name = 'Modapter' pubspec.description = 'Modular adapter for Android RecyclerView.' -pubspec.version = "0.2.0-alpha1" +pubspec.version = "0.2.0" pubspec.versionCode = 2 pubspec.url = 'https://github.com/samelody/modapter' pubspec.gitUrl = 'https://github.com/samelody/modapter.git' diff --git a/sample/build.gradle b/sample/build.gradle index ca3f45b..35db2b0 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -7,7 +7,7 @@ android { minSdkVersion deps.minSdk targetSdkVersion deps.targetSdk versionCode 2 - versionName "0.2.0-alpha1" + versionName "0.2.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { @@ -22,7 +22,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation project(':core') implementation project(':paging') -// implementation "com.samelody.modapter:modapter:0.1.0" +// implementation "com.samelody.modapter:modapter-core:0.2.0" +// implementation "com.samelody.modapter:modapter-paging:0.2.0" implementation deps.appcompat implementation deps.recyclerview implementation deps.constraintlayout diff --git a/sample/src/main/java/com/samelody/samples/modapter/MainActivity.java b/sample/src/main/java/com/samelody/samples/modapter/MainActivity.java index 8d90237..117a60d 100644 --- a/sample/src/main/java/com/samelody/samples/modapter/MainActivity.java +++ b/sample/src/main/java/com/samelody/samples/modapter/MainActivity.java @@ -4,7 +4,7 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.RecyclerView; -import com.samelody.modapter.AbstractItem; +import com.samelody.modapter.AdapterItem; import com.samelody.modapter.ItemManager; import com.samelody.modapter.ModularAdapter; @@ -19,20 +19,20 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main); RecyclerView listView = findViewById(R.id.list); - ModularAdapter adapter = new ModularAdapter<>(); + ModularAdapter adapter = new ModularAdapter<>(); listView.setAdapter(adapter); - ItemManager manager = adapter.getManager(); + ItemManager manager = adapter.getManager(); manager.register(R.layout.item_gallery_image, ImageViewHolder.class) .register(R.layout.item_gallery_date, DateViewHolder.class); manager.unregister(R.layout.item_gallery_image); - List list = new ArrayList<>(); - list.add(new ImageItem()); - list.add(new ImageItem()); + List list = new ArrayList<>(); list.add(new ImageItem()); + list.add(new DateItem()); list.add(new ImageItem()); + list.add(new DateItem()); manager.submitList(list); adapter.notifyDataSetChanged();