我有一个实例,以前我把我的View
传递到一个新的方法中以便操纵一些东西。下面我提供一个示例。基本上,我正在使用一个RecyclerView
,在recylerview
创建view
时进行inflating
。
现在我有了被填充的View
对象,现在我只需要将其传递给我的方法进行操作。
manipulateView(view)
manipulateView
设定view子项
的颜色和属性。
那个以前可以工作并且一切都很好,但现在我要使用ViewBinding
现在我有了一个ViewStub
,需要inflate
我的customView
,如下所示是代码:
ViewDataBinding viewDataBinding = DataBindingUtil.inflate(layoutInflater, getLayoutResource(), viewGroup, false);
ViewStub viewStub = (ViewStub) viewDataBinding.getRoot().findViewById(R.id.stub);
然后我在这里为 viewStub
设置了布局。
viewStub.setLayoutResource(getLayoutResource());
现在,
setLayoutResource
需要一个带有layout
的id
的int
值,我的问题是如何在getLayoutResource()
上调用manipulateView
,我应该只是传递viewStub
,然后调用viewStub.getRootView()
并Manipulate
那个视图吗?如果能够直接
manipulate
ViewDataBinding
对象本身,那将是最好的,我应该只是操纵ViewDataBinding::getRoot
吗?
View myView = layoutInflater.inflate(...)
和View myView = binding.getRoot()
返回相同的东西。 :) 所以你只需要改变那一行,其余的代码应该是类似的。 - AdamMc331findViewById
,您应该能够使用binding.myViewId
并获取对视图的引用。这就是数据绑定的美妙之处之一。更多信息请参见:https://medium.com/androiddevelopers/no-more-findviewbyid-457457644885 - AdamMc331binding.hello.setText
,它说“hello”未解决,当然我已经用我的id
替换了hello
。 - SamHoque