赞
踩
Kotlin插件于1.4.20中提出废弃,谷歌留给了我们一年的时间进行修改替换,怎么办呢?已经习惯了以前直接使用xml中的id作为view使用了,难道要回到findViewById的时代?怎么可能,还不赶紧拥抱ViewBinding的怀抱。
谷歌也深知Kotlin插件的弊端,比如:
ViewBinding解决了上述问题,但是同时带来其他弊端:
不过对于视图绑定,也有方便的写法,快一起来见识一下吧。
首先在Gradle插件中声明使用
// Android Studio 3.6 android { viewBinding { enabled = true } dataBinding{ enabled = true } } // Android Studio 4.0 android { buildFeatures { dataBinding = true viewBinding = true } }
其次,为了便捷的一行代码直接使用ViewBinding,我们还需要引入
implementation 'com.hi-dhl:binding:1.0.5'
然后直接在Activity、Fragment、Adapter等需要使用的地方使用
class HomeFragment : Fragment() { //一行代码,FragmentHomeBinding 是对应的Fragment或Activity自动对应的Binding,和自己定义的名字有关 private val binding: FragmentHomeBinding by viewbind() private var count = 0 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_home, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) //click为xml中的id binding.click.setOnClickListener { count++ //dashboardView为xml中的id binding.dashboardView.setPointer(count % 21) } } }
布局文件xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".fragment.HomeFragment"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.kxqin.myapplication.view.DashboardView android:id="@+id/dashboardView" android:layout_width="match_parent" android:layout_height="300dp" /> <TextView android:id="@+id/click" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Click" android:textColor="@color/black" android:layout_gravity="center" /> </LinearLayout> </FrameLayout>
之后只需要像kotlin插件那样用binding调用对应的id就好啦,是不是一行代码直接使用viewbinding了?是不是很方便?赶紧在kotlin插件停用之前替换掉吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。