ArrayAdapter dans Android pour créer une liste de lecture simple

J’ai essayé de créer une Activity dans Android, cette activité ne contient rien d’autre que ListView .

Comme je sais pour remplir la liste, nous devons utiliser un ArrayAdapter .

Donc, pour comprendre ArrayAdapter, j’ai lu le lien suivant:

http://developer.android.com/reference/android/widget/ArrayAdapter.html

Mais encore je suis incapable de le comprendre clairement!

L’un des plus grands doutes est de savoir pourquoi le constructeur a besoin d’un TextView ressource TextView alors que mon activité ne contient pas de TextViews.

Je ne parle pas de ce que c’est le seul constructeur, mais ce que j’essaie d’expliquer, c’est que je suis incapable de le comprendre.

Afin de créer une liste simple, j’ai également mentionné le lien suivant:

Simple ListView en utilisant l’exemple ArrayAdapter.

Mais encore une fois mon principal doute est pourquoi il a besoin d’un ID de ressource TextView?

Si quelqu’un peut l’expliquer par l’exemple, ce sera très utile.

MODIFIER:

 ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, android.R.id.text1, values); 

ArrayAdapter utilise un TextView pour afficher chaque élément qu’il contient. Dans les coulisses, il utilise la toSsortingng() de chaque object qu’il contient et l’affiche dans TextView. ArrayAdapter a un certain nombre de constructeurs qui peuvent être utilisés et celui que vous avez utilisé dans votre exemple est:

 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 que vous souhaitez en étendant la classe TextView. Cela devrait alors aller dans la mise en page pour votre usage. Vous pouvez faire référence à ceci dans le champ textViewResourceId pour lier les objects à cette vue au lieu de la valeur par défaut.

Pour votre usage, je vous suggère d’utiliser le constructeur:

 ArrayAdapter(Context context, int resource, T[] objects). 

Dans votre cas, ce serait:

 ArrayAdapter(this, android.R.layout.simple_list_item_1, values) 

et ça devrait aller. Cela lie chaque chaîne à l’affichage TextView par défaut – un fond blanc simple et simple.

Donc, pour répondre à votre question, vous n’avez pas à utiliser le textViewResourceId.

Mais encore une fois le principal doute pourquoi l’ID de ressources TextView dont il a besoin?

Regardez le constructeur et les parameters.

 public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects) 

Ajouté dans le constructeur API niveau 1

Paramètres

context Le context actuel.

resource L’ID de ressource d’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 mise en page à remplir. Objets Objets à représenter dans ListView .

android.R.id.text1 fait référence à l’id du texte dans la ressource Android. Donc, vous n’avez pas besoin d’avoir celui dans votre activité.

Voici la liste complète

http://developer.android.com/reference/android/R.id.html

 ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, android.R.id.text1, values); 

this fait référence au contexte d’activité

android.R.layout.simple_list_item_1 simple_list_item_1 est la mise en page dans android.R.layout.

android.R.id.text1 fait référence à l’ID de ressource Android.

values est un tableau de chaînes à partir 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’identifiant de la mise en page que vous utilisez lors de l’instanciation de la vue.

Maintenant, cette disposition a beaucoup de vues enfants avec leurs propres identifiants. Ainsi, textViewResourceId indique quelle vue enfant doit être remplie avec les données.

 public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects) 

Je suis également nouveau sur Android, donc je peux me tromper. Mais selon ma compréhension, lorsque j’utilise ceci pour la création de listview, le 2ème argument est la mise en page des éléments de la liste. Une mise en page se compose de plusieurs vues (vue d’image, vue de texte, etc.). Avec le 3ème argument, vous spécifiez dans quelle vue ou dans quelle vue de texte vous souhaitez afficher le texte.

L’ID de ressource TextView dont il a besoin est pour un fichier de mise en page TextView, il ne sera donc pas dans la même activité.

Vous pouvez le créer en allant dans Fichier> Nouveau> XML> Fichier de mise en page XML et entrez le type de widget, qui est «TextView» dans le champ de la balise racine.

Source: https://www.kompulsa.com/the-simplest-way-to-implement-an-android-listview/

Vous n’avez pas besoin d’utiliser id pour textview. Vous pouvez en apprendre plus sur 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 est int: l’ID du TextView dans la ressource de mise en page à remplir.

ArrayAdapter a tellement de constructeurs avec un nombre différent d’arguments que j’en mentionne certains

 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 objects) ArrayAdapter(Context context, int resource, int textViewResourceId, List objects) 

Maintenant, vous pouvez comprendre chaque constructeur est différent et ils ont utilisé différentes listes d’arguments.

Et la réponse simple est que vous pouvez utiliser ArrayAdapter avec une vue texte dans un fichier XML cible ou sans. C’est pas grave. Et vous n’avez pas besoin de spécifier l’ID de vue de texte, vous pouvez l’utiliser sans. Mais vous devrez peut-être utiliser une option avancée avec votre simple affichage de liste, vous devez aller avec une vue de texte.

Voici un exemple d’exemple

 ArrayAdapter adapter = new ArrayAdapter(this,R.layout.ListView,SsortingngArray); 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é.