云虚拟主机怎么建网站,如何制定网站建设规划,网站怎么正确的做内链接,网站建设与制作教程高版本的gradle不再支持 kotlin-android-extensions插件#xff0c;因此view的绑定方式也有所改变。
1.启用视图绑定
android {...viewBinding {enabled true}}
如果想在生成绑定类时忽略某个布局文件#xff0c;请将 tools:viewBindingIgnoretrue 属性添加到…高版本的gradle不再支持 kotlin-android-extensions插件因此view的绑定方式也有所改变。
1.启用视图绑定
android {...viewBinding {enabled true}}
如果想在生成绑定类时忽略某个布局文件请将 tools:viewBindingIgnoretrue 属性添加到相应布局文件的根视图中
LinearLayout...tools:viewBindingIgnoretrue ...
/LinearLayout
2.在 Activity 中使用视图绑定
如需设置绑定类的实例以供 Activity 使用请在 Activity 的 onCreate() 方法中执行以下步骤
调用生成的绑定类中包含的静态 inflate() 方法。此操作会创建该绑定类的实例以供 Activity 使用。通过调用 getRoot() 方法或使用 Kotlin 属性语法获取对根视图的引用。将根视图传递到 setContentView()使其成为屏幕上的活动视图。 private lateinit var binding: ResultProfileBindingoverride fun onCreate(savedInstanceState: Bundle) {super.onCreate(savedInstanceState)binding ResultProfileBinding.inflate(layoutInflater)val view binding.rootsetContentView(view)}
3.在 Fragment中使用视图绑定
如需设置绑定类的实例以供 Fragment 使用请在 Fragment 的 onCreateView() 方法中执行以下步骤
调用生成的绑定类中包含的静态 inflate() 方法。此操作会创建该绑定类的实例以供 Fragment 使用。通过调用 getRoot() 方法或使用 Kotlin 属性语法获取对根视图的引用。从 onCreateView() 方法返回根视图使其成为屏幕上的活动视图。 private var _binding: ResultProfileBinding? nullprivate val binding get() _binding!!override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View? {_binding ResultProfileBinding.inflate(inflater, container, false)return binding.root}override fun onDestroyView() {super.onDestroyView()_binding null} 4.自定义Dialog中使用
public class MyDialog extends Dialog {protected View mView;protected DialogBottomBinding mBinding;public MyDialog(NonNull Context context, StyleRes int themeResId) {super(context, themeResId);//原来的写法// mView View.inflate(getContext(), getLayoutId(), null);//使用ViewBinding的写法mBinding DialogBottomBinding.inflate(getLayoutInflater());mView mBinding.getRoot();setContentView(mView);}
}
5.在自定义View中使用
// 自定义view
public class MyLinearLayout extends LinearLayout {public MyLinearLayout(Context context) {this(context, null);}public MyLinearLayout(Context context, Nullable AttributeSet attrs) {this(context, attrs, 0);}public MyLinearLayout(Context context, Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// 正常添加布局亲测有效ViewMyLayoutBinding binding LibPlateformLayoutBinding.inflate(LayoutInflater.from(getContext()), this, true);// 方法二// val root View.inflate(context, R.layout.widget_core, this)// binding WidgetCoreBinding.bind(root)// 针对根标签为mergeViewMyLayoutMergeBinding binding ViewMyLayoutMergeBinding.inflate(LayoutInflater.from(getContext()), this);}}
6.在RecyclerView的Adapter中使用
class StudentAdapter(private val context: Context,private val list: ListAddressInfo) : RecyclerView.AdapterItemViewHolder() {override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {val studentBinding ItemAddressBinding.inflate(LayoutInflater.from(context), parent, false)return ItemViewHolder(studentBinding)}SuppressLint(SetTextI18n)override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {holder.itemBinding.tvName.text 姓名 list[position].name}override fun getItemCount(): Int {return list.size}inner class ItemViewHolder(var itemBinding: ItemAddressBinding) : RecyclerView.ViewHolder(itemBinding.root)
}
以上是各场景使用viewBinding的方式基本可以满足大家的开发需求如有其他场景的可以在评论区留言讨论。