diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 94a25f7..35eb1dd 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/delegateadapter/src/main/java/com/livermor/delegateadapter/delegate/KDelegateAdapter.kt b/delegateadapter/src/main/java/com/livermor/delegateadapter/delegate/KDelegateAdapter.kt
index 20729a0..b7035b7 100644
--- a/delegateadapter/src/main/java/com/livermor/delegateadapter/delegate/KDelegateAdapter.kt
+++ b/delegateadapter/src/main/java/com/livermor/delegateadapter/delegate/KDelegateAdapter.kt
@@ -6,8 +6,7 @@ import kotlinx.android.extensions.LayoutContainer
/**
* @author dumchev on 04.11.17.
*/
-abstract class KDelegateAdapter
- : BaseDelegateAdapter() {
+abstract class KDelegateAdapter : BaseDelegateAdapter() {
open fun onCreated(view: View) = Unit
diff --git a/example/src/main/java/com/livermor/dumchev/delegateadapters/base/KotlinBaseExampleActivity.kt b/example/src/main/java/com/livermor/dumchev/delegateadapters/base/KotlinBaseExampleActivity.kt
index a0800fd..42cc92f 100644
--- a/example/src/main/java/com/livermor/dumchev/delegateadapters/base/KotlinBaseExampleActivity.kt
+++ b/example/src/main/java/com/livermor/dumchev/delegateadapters/base/KotlinBaseExampleActivity.kt
@@ -6,6 +6,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import com.livermor.delegateadapter.delegate.diff.DiffUtilCompositeAdapter
import com.livermor.dumchev.delegateadapters.base.adapter.CheckDelegateAdapter
+import com.livermor.dumchev.delegateadapters.base.adapter.ConcatenatingAdapter
import com.livermor.dumchev.delegateadapters.base.adapter.GenerateItemsDelegateAdapter
import com.livermor.dumchev.delegateadapters.base.adapter.TextDelegateAdapter
import kotlinx.android.synthetic.main.activity_base_example.*
@@ -17,6 +18,7 @@ class KotlinBaseExampleActivity : AppCompatActivity() {
.add(GenerateItemsDelegateAdapter { generateNewData() })
.add(TextDelegateAdapter())
.add(CheckDelegateAdapter())
+ .add(ConcatenatingAdapter(View.OnClickListener { generateNewData() }))
.build()
}
diff --git a/example/src/main/java/com/livermor/dumchev/delegateadapters/base/MockDataFactory.java b/example/src/main/java/com/livermor/dumchev/delegateadapters/base/MockDataFactory.java
index 7ed449f..eeb9baa 100644
--- a/example/src/main/java/com/livermor/dumchev/delegateadapters/base/MockDataFactory.java
+++ b/example/src/main/java/com/livermor/dumchev/delegateadapters/base/MockDataFactory.java
@@ -3,6 +3,7 @@
import com.livermor.delegateadapter.delegate.diff.DiffUtilItem;
import com.livermor.dumchev.delegateadapters.R;
import com.livermor.dumchev.delegateadapters.base.model.CheckItem;
+import com.livermor.dumchev.delegateadapters.base.model.ConcatenetedModel;
import com.livermor.dumchev.delegateadapters.base.model.ImageItem;
import com.livermor.dumchev.delegateadapters.base.model.TextItem;
@@ -22,13 +23,18 @@ static List prepareData() {
Random random = new Random();
for (int i = 0; i < SIZE; i++) {
DiffUtilItem item;
- int type = random.nextInt(3);
+ int type = random.nextInt(4);
if (type == 0) {
item = new TextItem("Title " + i, "Description " + i);
} else if (type == 1) {
item = new ImageItem("Title " + i, R.mipmap.ic_launcher_round);
- } else {
+ } else if (type == 2) {
item = new CheckItem("You still love this lib", true);
+ } else {
+ item = new ConcatenetedModel(
+ new ImageItem("Title " + i, R.mipmap.ic_launcher_round),
+ new TextItem("Title " + i, "Description " + i)
+ );
}
objects.add(item);
}
diff --git a/example/src/main/java/com/livermor/dumchev/delegateadapters/base/adapter/ConcatenatingAdapter.kt b/example/src/main/java/com/livermor/dumchev/delegateadapters/base/adapter/ConcatenatingAdapter.kt
new file mode 100644
index 0000000..e260c66
--- /dev/null
+++ b/example/src/main/java/com/livermor/dumchev/delegateadapters/base/adapter/ConcatenatingAdapter.kt
@@ -0,0 +1,24 @@
+package com.livermor.dumchev.delegateadapters.base.adapter
+
+import android.view.View
+import com.livermor.delegateadapter.delegate.KDelegateAdapter
+import com.livermor.dumchev.delegateadapters.R
+import com.livermor.dumchev.delegateadapters.base.model.ConcatenetedModel
+
+/**
+ * @author dumchev on 11/12/2018.
+ */
+class ConcatenatingAdapter(clicks: View.OnClickListener) : KDelegateAdapter() {
+
+ private val textDelegateAdapter by lazy { TxtDelegateAdapter() }
+ private val imageDelegateAdapter by lazy { ImageDelegateAdapter(clicks) }
+
+ override fun KViewHolder.onBind(item: ConcatenetedModel) {
+ with(textDelegateAdapter) { onBind(item.textViewModel) }
+ with(imageDelegateAdapter) { onBind(item.imageViewModel) }
+ }
+
+ override fun getLayoutId(): Int = R.layout.composite_item
+
+ override fun isForViewType(item: Any): Boolean = item is ConcatenetedModel
+}
\ No newline at end of file
diff --git a/example/src/main/java/com/livermor/dumchev/delegateadapters/base/model/ConcatenetedModel.kt b/example/src/main/java/com/livermor/dumchev/delegateadapters/base/model/ConcatenetedModel.kt
new file mode 100644
index 0000000..61a80ce
--- /dev/null
+++ b/example/src/main/java/com/livermor/dumchev/delegateadapters/base/model/ConcatenetedModel.kt
@@ -0,0 +1,13 @@
+package com.livermor.dumchev.delegateadapters.base.model
+
+import com.livermor.delegateadapter.delegate.diff.KDiffUtilItem
+
+/**
+ * @author dumchev on 11/12/2018.
+ */
+data class ConcatenetedModel(
+ val imageViewModel: ImageItem,
+ val textViewModel: TextItem
+) : KDiffUtilItem {
+ override val id: Any = "" + imageViewModel.id() + textViewModel.id()
+}
\ No newline at end of file
diff --git a/example/src/main/res/layout/composite_item.xml b/example/src/main/res/layout/composite_item.xml
new file mode 100644
index 0000000..4b89241
--- /dev/null
+++ b/example/src/main/res/layout/composite_item.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/src/main/res/values/colors.xml b/example/src/main/res/values/colors.xml
index 3ab3e9c..1ef660c 100644
--- a/example/src/main/res/values/colors.xml
+++ b/example/src/main/res/values/colors.xml
@@ -3,4 +3,5 @@
#3F51B5
#303F9F
#FF4081
+ #fffdb9