Bindings ermöglichen die Interaktion zwischen Code und den Views

View Binding oder Find View By Id?

Google empfiehlt die Verwendung von View-Binding wo immer möglich. Möglicherweise wird die Find View By Id - Variante in einer der zukünftigen Version von Android Studio entfernt werden.

Binding aktivieren

In build.gradle.kts unter Gradle Scripts mit Module app:

...
android{
	buildFeatures{
		viewBinding = true
	}
	...
}
...

Synchronisieren mit Sync now.

Binding verwenden

In der MainActivity muss folgendes gemacht werden

...
import de.ts.btin2.databinding.ActivityMainBinding; 
... 
 
public class MainActivity extends AppCompatActivity { 
	private ActivityMainBinding binding;
	TextView sampleElement;
	
	@Override 
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState); 
		//Binding
		binding = ActivityMainBinding.inflate(getLayoutInflater()); 
		setContentView(binding.getRoot);
	} 
	... 
	sampleElement.setText("Hi");
	binding.exampleView.setText("Hallo");
}

FindViewById (deprecated)


NICHT verwenden! (Außer Lingo will es explizit)

Alle Ressourcen, aus denen eine Anwendung besteht, werden in einer Klasse namens R zusammengefasst. Die Klasse R enthält die Unterklasse Layout, die die Layout-Ressourcen und die Views beinhaltet.

onCreate() überschreiben, dann kann überall auf findViewById(R.id.<idOfView>) zugegriffen werden

public class MainActivity extends AppCompatActivity { 
	@Override 
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState); 
		setContentView(R.layout.activity_main);  //nur für findViewById()
	} 
	... 
	TextView exampleView = findViewById(R.id.exampleView);
	exampleView.setText("Hallo");
}