diff --git a/recyclerview-adapters/src/main/AndroidManifest.xml b/recyclerview-adapters/src/main/AndroidManifest.xml
index b9c7cac6..e6629897 100644
--- a/recyclerview-adapters/src/main/AndroidManifest.xml
+++ b/recyclerview-adapters/src/main/AndroidManifest.xml
@@ -1,2 +1,2 @@
+ package="ru.touchin.roboswag.recyclerview_adapters"/>
diff --git a/recyclerview-adapters/src/main/java/ru/touchin/adapters/ItemAdapterDelegate.java b/recyclerview-adapters/src/main/java/ru/touchin/adapters/ItemAdapterDelegate.java
deleted file mode 100644
index 25ec210f..00000000
--- a/recyclerview-adapters/src/main/java/ru/touchin/adapters/ItemAdapterDelegate.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package ru.touchin.adapters;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-
-import java.util.List;
-
-/**
- * Objects of such class controls creation and binding of specific type of RecyclerView's ViewHolders.
- * Such delegates are creating and binding ViewHolders for specific items.
- * Default {@link #getItemViewType} is generating on construction of object.
- *
- * @param Type of {@link RecyclerView.ViewHolder} of delegate;
- * @param Type of items to bind to {@link RecyclerView.ViewHolder}s.
- */
-public abstract class ItemAdapterDelegate extends AdapterDelegate {
-
- @Override
- public boolean isForViewType(@NonNull final List items, final int adapterPosition, final int collectionPosition) {
- return collectionPosition >= 0
- && collectionPosition < items.size()
- && isForViewType(items.get(collectionPosition), adapterPosition, collectionPosition);
- }
-
- /**
- * Returns if object is processable by this delegate.
- * This item will be casted to {@link TItem} and passes to {@link #onBindViewHolder(TViewHolder, TItem, int, int, List)}.
- *
- * @param item Item to check;
- * @param adapterPosition Position of item in adapter;
- * @param collectionPosition Position of item in collection that contains item;
- * @return True if item is processable by this delegate.
- */
- public boolean isForViewType(@NonNull final Object item, final int adapterPosition, final int collectionPosition) {
- return true;
- }
-
- @Override
- public long getItemId(@NonNull final List items, final int adapterPosition, final int collectionPosition) {
- //noinspection unchecked
- return getItemId((TItem) items.get(collectionPosition), adapterPosition, collectionPosition);
- }
-
- /**
- * Returns unique ID of item to support stable ID's logic of RecyclerView's adapter.
- *
- * @param item Item in adapter;
- * @param adapterPosition Position of item in adapter;
- * @param collectionPosition Position of item in collection that contains item;
- * @return Unique item ID.
- */
- public long getItemId(@NonNull final TItem item, final int adapterPosition, final int collectionPosition) {
- return 0;
- }
-
- @Override
- public void onBindViewHolder(
- @NonNull final RecyclerView.ViewHolder holder,
- @NonNull final List items,
- final int adapterPosition,
- final int collectionPosition,
- @NonNull final List payloads
- ) {
- //noinspection unchecked
- onBindViewHolder((TViewHolder) holder, (TItem) items.get(collectionPosition), adapterPosition, collectionPosition, payloads);
- }
-
- /**
- * Binds item with payloads to created by this object ViewHolder.
- *
- * @param holder ViewHolder to bind item to;
- * @param item Item in adapter;
- * @param adapterPosition Position of item in adapter;
- * @param collectionPosition Position of item in collection that contains item;
- * @param payloads Payloads;
- */
- public abstract void onBindViewHolder(
- @NonNull final TViewHolder holder,
- @NonNull final TItem item,
- final int adapterPosition,
- final int collectionPosition,
- @NonNull final List payloads
- );
-
-}
diff --git a/recyclerview-adapters/src/main/java/ru/touchin/adapters/PositionAdapterDelegate.java b/recyclerview-adapters/src/main/java/ru/touchin/adapters/PositionAdapterDelegate.java
deleted file mode 100644
index 7da5e5cf..00000000
--- a/recyclerview-adapters/src/main/java/ru/touchin/adapters/PositionAdapterDelegate.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package ru.touchin.adapters;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-
-import java.util.List;
-
-/**
- * Objects of such class controls creation and binding of specific type of RecyclerView's ViewHolders.
- * Such delegates are creating and binding ViewHolders by position in adapter.
- * Default {@link #getItemViewType} is generating on construction of object.
- *
- * @param Type of {@link RecyclerView.ViewHolder} of delegate.
- */
-public abstract class PositionAdapterDelegate extends AdapterDelegate {
-
- @Override
- public boolean isForViewType(@NonNull final List items, final int adapterPosition, final int collectionPosition) {
- return isForViewType(adapterPosition);
- }
-
- /**
- * Returns if object is processable by this delegate.
- *
- * @param adapterPosition Position of item in adapter;
- * @return True if item is processable by this delegate.
- */
- public abstract boolean isForViewType(final int adapterPosition);
-
- @Override
- public long getItemId(@NonNull final List objects, final int adapterPosition, final int itemsOffset) {
- return getItemId(adapterPosition);
- }
-
- /**
- * Returns unique ID of item to support stable ID's logic of RecyclerView's adapter.
- *
- * @param adapterPosition Position of item in adapter;
- * @return Unique item ID.
- */
- public long getItemId(final int adapterPosition) {
- return 0;
- }
-
- @Override
- public void onBindViewHolder(
- @NonNull final RecyclerView.ViewHolder holder,
- @NonNull final List items,
- final int adapterPosition,
- final int collectionPosition,
- @NonNull final List payloads
- ) {
- //noinspection unchecked
- onBindViewHolder((TViewHolder) holder, adapterPosition, payloads);
- }
-
- /**
- * Binds position with payloads to ViewHolder.
- *
- * @param holder ViewHolder to bind position to;
- * @param adapterPosition Position of item in adapter;
- * @param payloads Payloads.
- */
- public void onBindViewHolder(@NonNull final TViewHolder holder, final int adapterPosition, @NonNull final List payloads) {
- //do nothing by default
- }
-
-}
diff --git a/recyclerview-adapters/src/main/java/ru/touchin/adapters/AdapterDelegate.java b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/AdapterDelegate.kt
similarity index 60%
rename from recyclerview-adapters/src/main/java/ru/touchin/adapters/AdapterDelegate.java
rename to recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/AdapterDelegate.kt
index f9802cf9..d2018ad4 100644
--- a/recyclerview-adapters/src/main/java/ru/touchin/adapters/AdapterDelegate.java
+++ b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/AdapterDelegate.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 RoboSwag (Gavriil Sitnikov, Vsevolod Ivanov)
+ * Copyright (c) 2019 RoboSwag (Gavriil Sitnikov, Vsevolod Ivanov)
*
* This file is part of RoboSwag library.
*
@@ -17,33 +17,26 @@
*
*/
-package ru.touchin.adapters;
+package ru.touchin.roboswag.recyclerview_adapters
-import androidx.annotation.NonNull;
-import androidx.core.view.ViewCompat;
-import androidx.recyclerview.widget.RecyclerView;
-import android.view.ViewGroup;
-
-import java.util.List;
+import androidx.core.view.ViewCompat
+import androidx.recyclerview.widget.RecyclerView
+import android.view.ViewGroup
/**
* Objects of such class controls creation and binding of specific type of RecyclerView's ViewHolders.
- * Default {@link #getItemViewType} is generating on construction of object.
+ * Default [.getItemViewType] is generating on construction of object.
*
- * @param Type of {@link RecyclerView.ViewHolder} of delegate.
- */
-public abstract class AdapterDelegate {
-
- private final int defaultItemViewType = ViewCompat.generateViewId();
+ * @param Type of [RecyclerView.ViewHolder] of delegate.
+ */
+abstract class AdapterDelegate {
/**
* Unique ID of AdapterDelegate.
*
* @return Unique ID.
*/
- public int getItemViewType() {
- return defaultItemViewType;
- }
+ val itemViewType = ViewCompat.generateViewId()
/**
* Returns if object is processable by this delegate.
@@ -53,7 +46,7 @@ public int getItemViewType() {
* @param collectionPosition Position of item in collection;
* @return True if item is processable by this delegate.
*/
- public abstract boolean isForViewType(@NonNull final List items, final int adapterPosition, final int collectionPosition);
+ abstract fun isForViewType(items: List<*>, adapterPosition: Int, collectionPosition: Int): Boolean
/**
* Returns unique ID of item to support stable ID's logic of RecyclerView's adapter.
@@ -63,9 +56,7 @@ public int getItemViewType() {
* @param collectionPosition Position of item in collection;
* @return Unique item ID.
*/
- public long getItemId(@NonNull final List items, final int adapterPosition, final int collectionPosition) {
- return 0;
- }
+ open fun getItemId(items: List<*>, adapterPosition: Int, collectionPosition: Int): Long = 0
/**
* Creates ViewHolder to bind item to it later.
@@ -73,8 +64,7 @@ public long getItemId(@NonNull final List items, final int adapterPositi
* @param parent Container of ViewHolder's view.
* @return New ViewHolder.
*/
- @NonNull
- public abstract TViewHolder onCreateViewHolder(@NonNull final ViewGroup parent);
+ abstract fun onCreateViewHolder(parent: ViewGroup): TViewHolder
/**
* Binds item to created by this object ViewHolder.
@@ -85,12 +75,12 @@ public long getItemId(@NonNull final List items, final int adapterPositi
* @param collectionPosition Position of item in collection that contains item;
* @param payloads Payloads;
*/
- public abstract void onBindViewHolder(
- @NonNull final RecyclerView.ViewHolder holder,
- @NonNull final List items,
- final int adapterPosition,
- final int collectionPosition,
- @NonNull final List payloads
- );
+ abstract fun onBindViewHolder(
+ holder: RecyclerView.ViewHolder,
+ items: List<*>,
+ adapterPosition: Int,
+ collectionPosition: Int,
+ payloads: List<*>
+ )
}
diff --git a/recyclerview-adapters/src/main/java/ru/touchin/adapters/DelegatesManager.kt b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/DelegatesManager.kt
similarity index 97%
rename from recyclerview-adapters/src/main/java/ru/touchin/adapters/DelegatesManager.kt
rename to recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/DelegatesManager.kt
index ed73229a..d79fc156 100644
--- a/recyclerview-adapters/src/main/java/ru/touchin/adapters/DelegatesManager.kt
+++ b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/DelegatesManager.kt
@@ -1,4 +1,4 @@
-package ru.touchin.adapters
+package ru.touchin.roboswag.recyclerview_adapters
import androidx.recyclerview.widget.RecyclerView
import android.util.SparseArray
diff --git a/recyclerview-adapters/src/main/java/ru/touchin/adapters/DelegationListAdapter.kt b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/DelegationListAdapter.kt
similarity index 97%
rename from recyclerview-adapters/src/main/java/ru/touchin/adapters/DelegationListAdapter.kt
rename to recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/DelegationListAdapter.kt
index 8328211f..1c90fe2a 100644
--- a/recyclerview-adapters/src/main/java/ru/touchin/adapters/DelegationListAdapter.kt
+++ b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/DelegationListAdapter.kt
@@ -1,4 +1,4 @@
-package ru.touchin.adapters
+package ru.touchin.roboswag.recyclerview_adapters
import androidx.recyclerview.widget.AsyncDifferConfig
import androidx.recyclerview.widget.AsyncListDiffer
@@ -33,7 +33,7 @@ open class DelegationListAdapter(config: AsyncDifferConfig) : Recy
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int, payloads: List) {
val collectionPosition = getCollectionPosition(position)
- if (collectionPosition in 0 until getList().size) {
+ if (collectionPosition in getList().indices) {
if (itemClickListener != null) {
holder.itemView.setOnRippleClickListener {
itemClickListener?.invoke(getList()[getCollectionPosition(holder.adapterPosition)], holder)
diff --git a/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/ItemAdapterDelegate.kt b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/ItemAdapterDelegate.kt
new file mode 100644
index 00000000..67e8d799
--- /dev/null
+++ b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/ItemAdapterDelegate.kt
@@ -0,0 +1,74 @@
+package ru.touchin.roboswag.recyclerview_adapters
+
+import androidx.recyclerview.widget.RecyclerView
+
+/**
+ * Objects of such class controls creation and binding of specific type of RecyclerView's ViewHolders.
+ * Such delegates are creating and binding ViewHolders for specific items.
+ * Default [.getItemViewType] is generating on construction of object.
+ *
+ * @param Type of [RecyclerView.ViewHolder] of delegate;
+ * @param Type of items to bind to [RecyclerView.ViewHolder]s.
+ */
+abstract class ItemAdapterDelegate : AdapterDelegate() {
+
+ override fun isForViewType(items: List<*>, adapterPosition: Int, collectionPosition: Int): Boolean {
+ return (collectionPosition >= 0
+ && collectionPosition < items.size
+ && isForViewType(items[collectionPosition]!!, adapterPosition, collectionPosition))
+ }
+
+ /**
+ * Returns if object is processable by this delegate.
+ * This item will be casted to [TItem] and passes to [.onBindViewHolder].
+ *
+ * @param item Item to check;
+ * @param adapterPosition Position of item in adapter;
+ * @param collectionPosition Position of item in collection that contains item;
+ * @return True if item is processable by this delegate.
+ */
+ open fun isForViewType(item: Any, adapterPosition: Int, collectionPosition: Int): Boolean {
+ return true
+ }
+
+ override fun getItemId(items: List<*>, adapterPosition: Int, collectionPosition: Int): Long =
+ getItemId(items[collectionPosition] as TItem, adapterPosition, collectionPosition)
+
+ /**
+ * Returns unique ID of item to support stable ID's logic of RecyclerView's adapter.
+ *
+ * @param item Item in adapter;
+ * @param adapterPosition Position of item in adapter;
+ * @param collectionPosition Position of item in collection that contains item;
+ * @return Unique item ID.
+ */
+ fun getItemId(item: TItem, adapterPosition: Int, collectionPosition: Int): Long = 0
+
+ override fun onBindViewHolder(
+ holder: RecyclerView.ViewHolder,
+ items: List<*>,
+ adapterPosition: Int,
+ collectionPosition: Int,
+ payloads: List<*>
+ ) {
+ onBindViewHolder(holder as TViewHolder, items[collectionPosition] as TItem, adapterPosition, collectionPosition, payloads)
+ }
+
+ /**
+ * Binds item with payloads to created by this object ViewHolder.
+ *
+ * @param holder ViewHolder to bind item to;
+ * @param item Item in adapter;
+ * @param adapterPosition Position of item in adapter;
+ * @param collectionPosition Position of item in collection that contains item;
+ * @param payloads Payloads;
+ */
+ abstract fun onBindViewHolder(
+ holder: TViewHolder,
+ item: TItem,
+ adapterPosition: Int,
+ collectionPosition: Int,
+ payloads: List<*>
+ )
+
+}
diff --git a/recyclerview-adapters/src/main/java/ru/touchin/adapters/OffsetAdapterUpdateCallback.kt b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/OffsetAdapterUpdateCallback.kt
similarity index 94%
rename from recyclerview-adapters/src/main/java/ru/touchin/adapters/OffsetAdapterUpdateCallback.kt
rename to recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/OffsetAdapterUpdateCallback.kt
index cb480f0e..d95aa2d9 100644
--- a/recyclerview-adapters/src/main/java/ru/touchin/adapters/OffsetAdapterUpdateCallback.kt
+++ b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/OffsetAdapterUpdateCallback.kt
@@ -1,4 +1,4 @@
-package ru.touchin.adapters
+package ru.touchin.roboswag.recyclerview_adapters
import androidx.recyclerview.widget.ListUpdateCallback
import androidx.recyclerview.widget.RecyclerView
diff --git a/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/PositionAdapterDelegate.kt b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/PositionAdapterDelegate.kt
new file mode 100644
index 00000000..ce55eacb
--- /dev/null
+++ b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/PositionAdapterDelegate.kt
@@ -0,0 +1,61 @@
+package ru.touchin.roboswag.recyclerview_adapters
+
+import androidx.recyclerview.widget.RecyclerView
+
+/**
+ * Objects of such class controls creation and binding of specific type of RecyclerView's ViewHolders.
+ * Such delegates are creating and binding ViewHolders by position in adapter.
+ * Default [.getItemViewType] is generating on construction of object.
+ *
+ * @param Type of [RecyclerView.ViewHolder] of delegate.
+ */
+abstract class PositionAdapterDelegate : AdapterDelegate() {
+
+ override fun isForViewType(items: List<*>, adapterPosition: Int, collectionPosition: Int): Boolean {
+ return isForViewType(adapterPosition)
+ }
+
+ /**
+ * Returns if object is processable by this delegate.
+ *
+ * @param adapterPosition Position of item in adapter;
+ * @return True if item is processable by this delegate.
+ */
+ abstract fun isForViewType(adapterPosition: Int): Boolean
+
+ override fun getItemId(items: List<*>, adapterPosition: Int, collectionPosition: Int): Long {
+ return getItemId(adapterPosition)
+ }
+
+ /**
+ * Returns unique ID of item to support stable ID's logic of RecyclerView's adapter.
+ *
+ * @param adapterPosition Position of item in adapter;
+ * @return Unique item ID.
+ */
+ fun getItemId(adapterPosition: Int): Long {
+ return 0
+ }
+
+ override fun onBindViewHolder(
+ holder: RecyclerView.ViewHolder,
+ items: List<*>,
+ adapterPosition: Int,
+ collectionPosition: Int,
+ payloads: List<*>
+ ) {
+ onBindViewHolder(holder as TViewHolder, adapterPosition, payloads)
+ }
+
+ /**
+ * Binds position with payloads to ViewHolder.
+ *
+ * @param holder ViewHolder to bind position to;
+ * @param adapterPosition Position of item in adapter;
+ * @param payloads Payloads.
+ */
+ open fun onBindViewHolder(holder: TViewHolder, adapterPosition: Int, payloads: List<*>) {
+ //do nothing by default
+ }
+
+}
diff --git a/recyclerview-adapters/src/main/java/ru/touchin/adapters/SimpleDataObserver.kt b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/SimpleDataObserver.kt
similarity index 93%
rename from recyclerview-adapters/src/main/java/ru/touchin/adapters/SimpleDataObserver.kt
rename to recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/SimpleDataObserver.kt
index 97fc0c64..fe909bc9 100644
--- a/recyclerview-adapters/src/main/java/ru/touchin/adapters/SimpleDataObserver.kt
+++ b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/SimpleDataObserver.kt
@@ -1,4 +1,4 @@
-package ru.touchin.adapters
+package ru.touchin.roboswag.recyclerview_adapters
import androidx.recyclerview.widget.RecyclerView