J'ai essayé de créer un Activity
sous Android. Cette activité ne contient qu'un ListView
rien d'autre.
Comme je sais que pour remplir la liste, nous devons utiliser un ArrayAdapter
.
Donc, pour comprendre le ArrayAdapter, j'ai lu le lien suivant:
http://developer.Android.com/reference/Android/widget/ArrayAdapter.html
Mais je suis toujours incapable de comprendre clairement!
L'un des principaux doutes est de savoir pourquoi le constructeur a besoin d'un identifiant de ressource TextView
alors que mon activité n'a pas de TextViews ce que je devrais avoir à lui donner?
Je ne dis pas que c'est le seul constructeur, juste que je suis incapable de comprendre la logique derrière tout cela.
Afin de créer une simple listview, j'ai aussi fait référence au lien suivant:
Simple ListView utilisant l'exemple ArrayAdapter.
Mais là encore, mon principal doute est de savoir pourquoi un identifiant de ressource TextView est-il nécessaire?
Si quelqu'un peut l'expliquer avec un exemple, ce sera très utile.
EDIT:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
Android.R.layout.simple_list_item_1, Android.R.id.text1, values);
ArrayAdapter utilise un TextView pour afficher chacun de ses éléments. En coulisse, il utilise la méthode toString()
de chaque objet qu'il contient et l'affiche dans TextView. ArrayAdapter possède un certain nombre de constructeurs pouvant être utilisés. Celui que vous avez utilisé dans votre exemple est le suivant:
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
Par défaut, ArrayAdapter utilise le TextView par défaut pour afficher chaque élément. Mais si vous le souhaitez, vous pouvez créer votre propre TextView et implémenter toute conception complexe de votre choix en étendant la classe TextView. Cela devrait ensuite aller dans la mise en page pour votre usage. Vous pouvez référencer cela dans le champ textViewResourceId pour lier les objets à cette vue au lieu de la valeur par défaut.
Pour votre utilisation, je vous suggérerais d'utiliser le constructeur:
ArrayAdapter(Context context, int resource, T[] objects).
Dans votre cas, ce serait:
ArrayAdapter<String>(this, Android.R.layout.simple_list_item_1, values)
et ça devrait aller. Cela liera chaque chaîne à l’affichage TextView par défaut - fond blanc simple et clair.
Donc, pour répondre à votre question, vous n’avez pas besoin d’utiliser textViewResourceId.
Mais encore une fois principal doute, pourquoi l'id de ressource TextView dont il a besoin?
Regardez le constructeur et les params.
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
Ajouté dans le constructeur de niveau 1 de l'API
Paramètres
context
Le contexte actuel.
resource
ID de ressource pour un fichier de présentation contenant une présentation à utiliser lors de l'instanciation des vues.
textViewResourceId
L'identifiant de TextView dans la ressource de présentation à renseigner. Les objets à représenter dans leListView
.
Android.R.id.text1
fait référence à l'id du texte dans la ressource Android. Donc, vous n'avez pas besoin de celui-ci dans votre activité.
Voici la liste complète
http://developer.Android.com/reference/Android/R.id.html
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
Android.R.layout.simple_list_item_1, Android.R.id.text1, values);
this
fait référence au contexte de l'activité
Android.R.layout.simple_list_item_1
simple_list_item_1 est la présentation dans Android.R.layout.
Android.R.id.text1
fait référence à l'ID de ressource Android.
values
est un tableau de chaînes du lien que vous avez fourni
http://developer.Android.com/reference/Android/R.layout.html
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
Ici, ressource signifie l'id de la mise en page que vous utilisez lors de l'instanciation de la vue.
Maintenant, cette mise en page comporte de nombreuses vues enfants avec leurs propres identifiants. Ainsi, textViewResourceId
indique quelle vue enfant nous devons remplir avec les données.
L'identifiant de ressource TextView dont il a besoin est pour un fichier de mise en page TextView, il ne fera donc pas partie de la même activité.
Vous pouvez le créer en sélectionnant Fichier> Nouveau> XML> Fichier de présentation XML et en entrant le type de widget, "TextView" dans le champ de la balise racine.
Source: https://www.kompulsa.com/the-simplest-way-to-implement-an-Android-listview/
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
Je suis aussi nouveau sur Android, alors je me trompe peut-être. Mais selon ma compréhension, lors de l’utilisation de ceci pour la création d’une liste vue, le deuxième argument est la disposition des éléments de la liste. Une mise en page se compose de plusieurs vues (vue image, vue texte, etc.). Avec le 3ème argument, vous spécifiez dans quelle vue ou dans quelle vue de texte vous voulez que le texte soit affiché.
Vous n'avez pas besoin d'utiliser id pour textview. Vous pouvez en apprendre davantage grâce à Android arrayadapter . Le code ci-dessous initialise le tableau.
ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.single_item, eatables);
Pour votre question, la réponse est Android.R.id.text1
is int: L'id de TextView dans la ressource de présentation à renseigner.
ArrayAdapter a tellement de constructeurs avec un nombre différent d'arguments que je mentionne certains d'entre eux
ArrayAdapter(Context context, int resource)
ArrayAdapter(Context context, int resource, int textViewResourceId)
ArrayAdapter(Context context, int resource, T[] objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
ArrayAdapter(Context context, int resource, List<T> objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)
Maintenant, vous pouvez comprendre que chaque constructeur est différent et qu'ils utilisaient une liste d'arguments différente.
Et la réponse est simple: vous pouvez utiliser ArrayAdapter avec une vue de texte dans un fichier xml cible ou sans. Ce n'est pas grave. Et vous n'avez pas besoin de spécifier un identifiant d'affichage de texte sans lequel vous pouvez l'utiliser. Mais vous devrez peut-être utiliser une option avancée avec votre vue liste simple, vous devez choisir une vue texte.!
Voici un exemple
ArrayAdapter adapter = new ArrayAdapter<String>(this,R.layout.ListView,StringArray);
ListView listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);
C'est aussi un code valide que vous pouvez utiliser avec beaucoup plus de clarté.
Si vous avez plusieurs vues dans le fichier de mise en forme Android.R.layout.simple_list_item_1
, vous devrez alors passer le troisième argument Android.R.id.text1
pour spécifier la vue qui doit être remplie avec les éléments du tableau (valeurs). Mais si votre fichier de mise en page ne contient qu'une seule vue, il n'est pas nécessaire de spécifier le troisième argument.