Android字符串模板s,androidmvvm:如何将资源字符串从视图模型传递到视图

对我来说,更好的选择是使用android

data binding

.

viewModel

直接进入你的视野。

将简单的逻辑映射到您的视图中并不是一个缺点。在web开发中,这就是我们在模板中使用React或VueJs所做的。最重要的是保持简单。

从这个角度来看,当你想改变一些事情时,你知道你的

display logic

每次在你的

view

如果您的显示逻辑将更加复杂,您可以创建一个

Binding Adapter

.

class MyViewModel() : ViewModel() {

// prevent changing the value of the greeting var outside the viewModel

private val _greeting = MutableLiveData()

// we can access greeting value from here

val greeting: LiveData

get() = _greeting

fun setGreeting(g: GreetingType) {

if (_greeting.value != g) {

_greeting.value = g

}

}

}

class MyFragment() : Fragment() {

private lateinit var viewModel: MyViewModel

private lateinit var binding: MyFragmentBinding

override fun onCreateView(

inflater: LayoutInflater,

container: ViewGroup?,

savedInstanceState: Bundle?

): View? {

// init your viewModel here

// [...]

binding = MyFragmentBinding.inflate(inflater, container, false)

binding.lifecycleOwner = viewLifecycleOwner

binding.viewModel = viewModel

return binding.root

}

}

object MyFirstDatabinding {

@JvmStatic

@BindingAdapter("android:dispGreeting")

fun displayGreeting(txtView: TextView, greeting: GreetingType?) {

greeting?.let { g ->

val sentence = when(g) {

GREETING_FIRST_TIME -> view.context.getString(R.string.greeting_first_time)

WELCOME_BACK -> view.context.getString(R.string.welcome_back)

GOODBYE -> view.context.getString(R.string.goodbye)

}

txtView.setText(sentence)

}

}

}

你的观点

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools">

name="viewModel"

type="your.package.MyViewModel" />

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/textView"

android:dispGreeting="@{viewModel.greeting}" />

androidx.constraintlayout.widget.ConstraintLayout>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值