Skip to content

Commit 6cc021b

Browse files
frettclaude
andcommitted
Use typed DataBinding property setters instead of setVariable(BR.xxx) in OtherActionsAdapter
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 3bdde54 commit 6cc021b

4 files changed

Lines changed: 21 additions & 5 deletions

File tree

ui/base-tool/src/main/kotlin/org/cru/godtools/base/tool/ui/share/OtherActionsAdapter.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import androidx.databinding.ViewDataBinding
77
import androidx.lifecycle.LifecycleOwner
88
import org.ccci.gto.android.common.androidx.recyclerview.adapter.SimpleDataBindingAdapter
99
import org.cru.godtools.base.tool.ui.share.model.ShareItem
10-
import org.cru.godtools.tool.BR
1110

1211
class OtherActionsAdapter(
1312
lifecycleOwner: LifecycleOwner,
@@ -24,11 +23,9 @@ class OtherActionsAdapter(
2423
override fun getItemViewType(position: Int) = items[position].actionLayout!!
2524

2625
override fun onCreateViewDataBinding(parent: ViewGroup, viewType: Int): ViewDataBinding =
27-
DataBindingUtil.inflate<ViewDataBinding?>(LayoutInflater.from(parent.context), viewType, parent, false).also {
28-
it.setVariable(BR.callbacks, callbacks)
29-
}
26+
DataBindingUtil.inflate<ViewDataBinding?>(LayoutInflater.from(parent.context), viewType, parent, false)
3027

3128
override fun onBindViewDataBinding(binding: ViewDataBinding, position: Int) {
32-
binding.setVariable(BR.item, items[position])
29+
items[position].bindTo(binding, callbacks)
3330
}
3431
}

ui/base-tool/src/main/kotlin/org/cru/godtools/base/tool/ui/share/model/ShareItem.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import android.app.Activity
44
import android.content.Intent
55
import android.os.Parcelable
66
import androidx.annotation.LayoutRes
7+
import androidx.databinding.ViewDataBinding
78
import org.ccci.gto.android.common.base.Ordered
9+
import org.cru.godtools.base.tool.ui.share.OtherActionsAdapter.Callbacks
810

911
interface ShareItem :
1012
Parcelable,
@@ -13,6 +15,7 @@ interface ShareItem :
1315

1416
@get:LayoutRes
1517
val actionLayout: Int? get() = null
18+
fun bindTo(binding: ViewDataBinding, callbacks: Callbacks?) = Unit
1619
fun triggerAction(activity: Activity)
1720

1821
val isValid get() = true

ui/base-tool/src/main/kotlin/org/cru/godtools/base/tool/ui/shareable/model/ShareableImageShareItem.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.cru.godtools.base.tool.ui.shareable.model
33
import android.app.Activity
44
import android.content.Context
55
import android.content.Intent
6+
import androidx.databinding.ViewDataBinding
67
import androidx.fragment.app.FragmentActivity
78
import dagger.assisted.Assisted
89
import dagger.assisted.AssistedFactory
@@ -16,10 +17,12 @@ import org.ccci.gto.android.common.base.Ordered
1617
import org.cru.godtools.base.ToolFileSystem
1718
import org.cru.godtools.base.tool.model.getFileBlocking
1819
import org.cru.godtools.base.tool.model.shareable.buildShareIntent
20+
import org.cru.godtools.base.tool.ui.share.OtherActionsAdapter
1921
import org.cru.godtools.base.tool.ui.share.model.ShareItem
2022
import org.cru.godtools.base.tool.ui.shareable.ShareableImageBottomSheetDialogFragment
2123
import org.cru.godtools.shared.tool.parser.model.shareable.ShareableImage
2224
import org.cru.godtools.tool.R
25+
import org.cru.godtools.tool.databinding.ToolShareItemShareableImageBinding
2326

2427
@Parcelize
2528
class ShareableImageShareItem(
@@ -48,6 +51,11 @@ class ShareableImageShareItem(
4851
}
4952

5053
override val actionLayout get() = R.layout.tool_share_item_shareable_image
54+
override fun bindTo(binding: ViewDataBinding, callbacks: OtherActionsAdapter.Callbacks?) {
55+
require(binding is ToolShareItemShareableImageBinding)
56+
binding.callbacks = callbacks
57+
binding.item = this
58+
}
5159

5260
override val order get() = Ordered.LOWEST_PRECEDENCE
5361

ui/tract-renderer/src/main/kotlin/org/cru/godtools/tract/ui/share/model/LiveShareItem.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
package org.cru.godtools.tract.ui.share.model
22

33
import android.app.Activity
4+
import androidx.databinding.ViewDataBinding
45
import kotlinx.parcelize.Parcelize
6+
import org.cru.godtools.base.tool.ui.share.OtherActionsAdapter
57
import org.cru.godtools.base.tool.ui.share.model.ShareItem
68
import org.cru.godtools.tool.tract.R
9+
import org.cru.godtools.tool.tract.databinding.TractShareItemLiveShareBinding
710
import org.cru.godtools.tract.activity.TractActivity
811

912
@Parcelize
1013
class LiveShareItem : ShareItem {
1114
override val actionLayout get() = R.layout.tract_share_item_live_share
15+
override fun bindTo(binding: ViewDataBinding, callbacks: OtherActionsAdapter.Callbacks?) {
16+
require(binding is TractShareItemLiveShareBinding)
17+
binding.callbacks = callbacks
18+
binding.item = this
19+
}
1220

1321
override fun triggerAction(activity: Activity) {
1422
(activity as? TractActivity)?.showLiveShareTutorial()

0 commit comments

Comments
 (0)