In most cases, view binding replaces findViewById.
Java:
Add this in Gradle file
android {
...
    buildFeatures {
        viewBinding true
    }
}
Kotlin
android {
    ...
    buildFeatures {
        viewBinding = true
    }
}
If you want a layout file to be ignored while generating binding classes, add the tools:viewBindingIgnore="true" attribute to the root view of that layout file:
<LinearLayout
    ...
    tools:viewBindingIgnore="true" >
    ...
</LinearLayout>
Use view binding in activities
Kotlin
private lateinit var binding: ResultProfileBinding
    
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ResultProfileBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
}
Java
private ResultProfileBinding binding;
    
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    binding = ResultProfileBinding.inflate(getLayoutInflater());
    View view = binding.getRoot();
    setContentView(view);
}
You can now use the instance of the binding class to reference any of the views:
Kotlin
binding.name.text = viewModel.name
binding.button.setOnClickListener { viewModel.userClicked() }
Java
binding.getName().setText(viewModel.getName());
binding.button.setOnClickListener(new View.OnClickListener() {
    viewModel.userClicked()
});
view binding in fragments
Kotlin
private var _binding: ResultProfileBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
    
override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
    ): View? {
        _binding = ResultProfileBinding.inflate(inflater, container, false)
        val view = binding.root
        return view
    }
    
override fun onDestroyView() {
    super.onDestroyView()
    _binding = null
}
Java
private ResultProfileBinding binding;
    
@Override
public View onCreateView (LayoutInflater inflater,
                              ViewGroup container,
                              Bundle savedInstanceState) {
    binding = ResultProfileBinding.inflate(inflater, container, false);
    View view = binding.getRoot();
    return view;
}
    
@Override
public void onDestroyView() {
    super.onDestroyView();
    binding = null;
}
You can now use the instance of the binding class to reference any of the views:
Kotlin
kotlinbinding.name.text = viewModel.name
binding.button.setOnClickListener { viewModel.userClicked() }
Java
binding.getName().setText(viewModel.getName());
binding.button.setOnClickListener(new View.OnClickListener() {
    viewModel.userClicked()
});