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