ArrayAdapter dans android pour créer simple listview

J'ai essayé de créer un Activity dans Android, Cette Activité ne contient qu'un ListView rien d'autre.

, Comme je le sais 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 le comprendre clairement!

L'un des plus grands doutes est pourquoi le constructeur a besoin d'un id de ressource TextView pendant mon activité n'a-t-il 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 cela.

Afin de créer un simple listview, j'ai également fait référence au lien suivant:

ListView Simple 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 avec un exemple, il sera très utile.

Modifier:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
          android.R.layout.simple_list_item_1, android.R.id.text1, values);
57
demandé sur mindreader 2013-09-29 18:50:04

7 réponses

ArrayAdapter utilise un TextView pour afficher chaque élément qu'il contient. Dans les coulisses, il utilise la méthode toString() de chaque objet qu'il contient et l'affiche dans TextView. ArrayAdapter a un certain nombre de constructeurs qui peut être utilisé et celui que vous avez utilisé dans votre exemple:

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 n'importe quel design complexe extension de la classe TextView. Cela devrait alors aller dans la mise en page pour votre utilisation. Vous pouvez référencer ceci dans le champ textViewResourceId pour lier les objets à cette vue au lieu de la vue par défaut.

Pour votre utilisation, je vous suggère 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 simple.

Donc pour répondre à votre question, vous n'avez pas besoin d'utiliser textViewResourceId.

67
répondu ucsunil 2014-06-24 21:19:03

Mais encore une fois principal doute pourquoi TextView resource id il a besoin?

Regardez le constructeur et les paramètres.

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

Ajouté dans le constructeur API de niveau 1

Paramètres

context Le contexte actuel.

resource L'ID de ressource pour un fichier de mise en page contenant une mise en page à utiliser lors de l'instanciation de vues.

textViewResourceId l'id du TextView dans la ressource de mise en page à remplir les objets les objets pour représenter dans le 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<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 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 du lien vous fourni

Http://developer.android.com/reference/android/R.layout.html

18
répondu Raghunandan 2015-05-30 06:52:23
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

Ici, resource signifie l'id de la mise en page que vous utilisez lors de l'instanciation de la vue.

Maintenant, cette mise en page a de nombreuses vues enfants avec leurs propres identifiants. Donc, textViewResourceId indique quelle vue enfant nous devons remplir avec les données.

3
répondu Prashant K 2015-07-06 12:03:34
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

Je suis également nouveau sur Android, donc je pourrais me tromper. Mais selon ma compréhension lors de l'utilisation de ceci pour la création de listview, le 2ème argument est la mise en page des éléments de liste. Une mise en page se compose de nombreuses Vues (vue image,Vue texte, etc.). Avec le 3ème argument, vous spécifiez dans quelle vue ou textview vous voulez que le texte soit affiché.

2
répondu Anuj Mahajan 2015-01-11 06:23:23

L'id de ressource TextView dont il a besoin est pour un fichier de mise en page TextView, donc il ne sera 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 balise racine.

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

2
répondu Nicholas Brown 2015-07-20 22:39:59

Vous n'avez pas besoin d'utiliser id pour textview. Vous pouvez en savoir plus sur Android arrayadapter . Le code ci-dessous initialise arrayadapter.

ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.single_item, eatables);
1
répondu Rajat Ghai 2015-01-14 19:01:14

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 tant de constructeurs avec un nombre différent d'arguments 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 ont utilisé une liste d'arguments différente.

Et la réponse simple est que vous pouvez utiliser ArrayAdapter avec vue texte dans un fichier xml cible ou sans. Il n'a pas d'importance. Et avez-vous pas besoin spécifiez l'ID de vue de texte que vous pouvez utiliser sans. Mais vous devrez peut-être aller avec une option d'avance avec votre vue de liste simple, vous devez aller avec une vue de texte.!

Voici un exemple d'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 clair.

1
répondu Sahan Pasindu Nirmal 2018-03-25 12:48:04