环境要求
Android Studio版本3.6及以上
Gradle 插件版本3.6.0及以上
视图绑定功能可按模块启用 要在某个模块中启用视图绑定,将 viewBinding 元素添加到其 build.gradle
文件中
android {
...
viewBinding {
enabled = true
}
}
在Activity中使用ViewBinding
- 首先声明
private ActivityMainBinding binding;
- 修改
onCreate()
方法
binding=ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
- 直接在Activity中使用在布局文件中添加的控件
private void initView(){
binding.btnBj.setOnClickListener(this);
binding.btnGz.setOnClickListener(this);
binding.btnMh.setOnClickListener(this);
binding.btnSh.setOnClickListener(this);
}
Fragment中使用ViewBinding
- 首先声明
private FragmentTestBinding binding;
- 修改
onCreateView
方法
binding=FragmentTestBinding.inflate(getLayoutInflater());
binding.tvTest.setText("test");
return binding.getRoot();
- 直接在Fragment中使用在布局文件中添加的控件
在Adapter中使用ViewBinding
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> {
private List<String> mList;
public MainAdapter(List<String> list) {
mList = list;
}
@NonNull
@Override
public MainAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_comment, parent, false);
//ViewHolder holder = new ViewHolder(view);
LayoutCommentBinding commentBinding = LayoutCommentBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
ViewHolder holder = new ViewHolder(commentBinding);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MainAdapter.ViewHolder holder, int position) {
holder.mTextView.setText(mList.get(position));
}
@Override
public int getItemCount() {
return mList.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView mTextView;
//public ViewHolder(@NonNull View itemView) {
// super(itemView);
// mTextView = itemView.findViewById(R.id.tv_include);
//}
//使用ViewBinding
ViewHolder(@NonNull LayoutCommentBinding commentBinding) {
super(commentBinding.getRoot());
mTextView = commentBinding.tvInclude;
}
}
}