Depuis que je travaille avec Android, je suis curieux de savoir comment je peux laisser Android faire tout ce qui concerne le changement d'orientation (mise en page par rapport à mise en page).Changement de l'orientation de la mise en page sans interaction avec l'activité
Actuellement, je dois alimenter le nombre correct de colonnes db et de vues à l'adaptateur de curseur. Est-ce la bonne façon ou est-ce que je manque quelque chose? Comment faites-vous les gars?
Veuillez jeter un oeil à deux SimpleCursorAdapter où je nourris le même nom de mise en page des deux dispositions existantes (il y a dans la mise en page et un dans la mise en page-land). La seule différence est la colonne db "type" supplémentaire et la vue supplémentaire "R.id.activities_row_text3".
Est-ce la bonne façon?
Cursor cursor;
SimpleCursorAdapter simpleCursorAdapter = null;
if ((cursor = db.fetchActivities(connection)) != null) {
startManagingCursor(cursor);
int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
simpleCursorAdapter = new SimpleCursorAdapter(
this,
R.layout.activities_row,
cursor,
new String[] {
"name",
"time" },
new int[] {
R.id.activities_row_text1,
R.id.activities_row_text2 });
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
simpleCursorAdapter = new SimpleCursorAdapter(
this,
R.layout.activities_row,
cursor,
new String[] {
"name",
"time",
"type" },
new int[] {
R.id.activities_row_text1,
R.id.activities_row_text2,
R.id.activities_row_text3 });
}
if (simpleCursorAdapter != null) {
setListAdapter(simpleCursorAdapter);
}
}
Merci pour votre réponse. Le code ci-dessus fait partie de toutes les activités sur Créer car mes applications prennent généralement en charge différentes dispositions. Je suis arrivé à la conclusion que je devais faire quelque chose de terriblement mal. Avec des tailles d'écran et des orientations différentes, la liste des différentes combinaisons curseur/adaptateur/vue a augmenté et j'ai pensé "demander aux pros". Considérez comme indiqué deux mises en page: une avec 2 colonnes et une avec trois colonnes (juste un test - c'est généralement plus compliqué). Utilisez-vous deux curseurs différents ou un seul curseur pour aller chercher tout? Comment/où décidez-vous quelles colonnes/vues utiliser? Merci hjw –
Utilisez un curseur pour un type de requête (envelopper le curseur dans sa propre classe et fournir des constructeurs pratiques). Écrivez votre propre classe d'adaptateurs au lieu d'utiliser SimpleAdapters - semble compilée au début, mais cela devient facile rapidement. Réutilisez ces classes dans plusieurs activités. Vous pouvez prédéfinir des mises en page ou modifier les propriétés de disposition (comme le numéro de colonne) dans le runtime, les deux solutions ont des avantages et des inconvénients. Ne mélangez pas l'interface utilisateur avec les structures de données - vous pourrez améliorer le code plus tard, après avoir appris de nouvelles techniques. – tomash