Skip to content

Commit b26c114

Browse files
Optimize usage
1 parent 3cd7818 commit b26c114

File tree

4 files changed

+24
-36
lines changed

4 files changed

+24
-36
lines changed

loadingstateview-ktx/src/main/java/com/dylanc/loadingstateview/Decorative.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package com.dylanc.loadingstateview
1818

19+
import android.view.View
20+
1921
interface Decorative {
2022
val isDecorated: Boolean get() = true
23+
val contentView: View? get() = null
2124
}

loadingstateview-ktx/src/main/java/com/dylanc/loadingstateview/LoadingStateDelegate.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,15 @@ class LoadingStateDelegate : LoadingState {
3030
}
3131

3232
override fun View.decorate(listener: OnReloadListener?, decorative: Decorative?): View =
33-
if (decorative?.isDecorated != false) LoadingStateView(this, listener).also { loadingStateView = it }.decorView else this
33+
when {
34+
decorative?.isDecorated == false -> this
35+
decorative?.contentView == null ->
36+
LoadingStateView(this, listener).also { loadingStateView = it }.decorView
37+
else -> {
38+
loadingStateView = LoadingStateView(decorative.contentView!!, listener)
39+
this
40+
}
41+
}
3442

3543
override fun registerView(vararg viewDelegates: LoadingStateView.ViewDelegate) {
3644
loadingStateView?.register(*viewDelegates)

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/base/BaseBindingActivity.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,15 @@ import com.dylanc.loadingstateview.Decorative
2323
import com.dylanc.loadingstateview.LoadingState
2424
import com.dylanc.loadingstateview.LoadingStateDelegate
2525
import com.dylanc.loadingstateview.OnReloadListener
26-
import com.dylanc.viewbinding.base.ViewBindingUtil
26+
import com.dylanc.viewbinding.base.ActivityBinding
27+
import com.dylanc.viewbinding.base.ActivityBindingDelegate
2728

28-
abstract class BaseBindingActivity<VB : ViewBinding> : AppCompatActivity(),
29-
LoadingState by LoadingStateDelegate(), OnReloadListener, Decorative {
30-
31-
lateinit var binding: VB private set
32-
33-
open val contentView get() = binding.root
29+
abstract class BaseBindingActivity<VB : ViewBinding> : AppCompatActivity(), OnReloadListener, Decorative,
30+
LoadingState by LoadingStateDelegate(), ActivityBinding<VB> by ActivityBindingDelegate() {
3431

3532
override fun onCreate(savedInstanceState: Bundle?) {
3633
super.onCreate(savedInstanceState)
37-
binding = ViewBindingUtil.inflateWithGeneric(this, layoutInflater)
38-
setContentView(binding.root)
39-
contentView.decorate(this, this)
34+
setContentViewWithBinding()
35+
binding.root.decorate(this, this)
4036
}
4137
}

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/base/BaseBindingFragment.kt

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,38 +18,19 @@ package com.dylanc.loadingstateview.sample.kotlin.base
1818

1919
import android.os.Bundle
2020
import android.view.LayoutInflater
21-
import android.view.View
2221
import android.view.ViewGroup
2322
import androidx.fragment.app.Fragment
2423
import androidx.viewbinding.ViewBinding
2524
import com.dylanc.loadingstateview.Decorative
2625
import com.dylanc.loadingstateview.LoadingState
2726
import com.dylanc.loadingstateview.LoadingStateDelegate
2827
import com.dylanc.loadingstateview.OnReloadListener
29-
import com.dylanc.viewbinding.base.ViewBindingUtil
28+
import com.dylanc.viewbinding.base.FragmentBinding
29+
import com.dylanc.viewbinding.base.FragmentBindingDelegate
3030

31-
abstract class BaseBindingFragment<VB : ViewBinding> : Fragment(),
32-
LoadingState by LoadingStateDelegate(), OnReloadListener, Decorative {
31+
abstract class BaseBindingFragment<VB : ViewBinding> : Fragment(), OnReloadListener, Decorative,
32+
LoadingState by LoadingStateDelegate(), FragmentBinding<VB> by FragmentBindingDelegate() {
3333

34-
private var _binding: VB? = null
35-
val binding get() = _binding!!
36-
37-
open val contentView: View? get() = null
38-
39-
override fun onCreateView(
40-
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
41-
): View? {
42-
_binding = ViewBindingUtil.inflateWithGeneric(this, inflater, container, false)
43-
return if (contentView != null) {
44-
contentView!!.decorate(this, this)
45-
binding.root
46-
} else {
47-
binding.root.decorate(this, this)
48-
}
49-
}
50-
51-
override fun onDestroyView() {
52-
super.onDestroyView()
53-
_binding = null
54-
}
34+
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) =
35+
createViewWithBinding(inflater, container).decorate(this, this)
5536
}

0 commit comments

Comments
 (0)