Pourquoi utiliser Inflater dans listview
- J'ai toujours eu l'ambiguïté sur pourquoi nous avons besoin d'utiliser inflater dans android, Pourquoi sont-ils utilisés dans ListView pour des mises en page personnalisées (comme ci-dessous)?
- Qu'est ce qu'un Inflater ?
- Quel est l'avantage de l'utilisation d'Inflater ?
public class MobileArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
public MobileArrayAdapter(Context context, String[] values) {
super(context, R.layout.list_mobile, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.list_mobile, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);
textView.setText(values[position]);
Merci,
OriginalL'auteur | 2013-08-02
Vous devez vous connecter pour publier un commentaire.
Pour résumer ce que l' LayoutInflater Documentation dit... Un
LayoutInflater
est l'un des Système Android de Services qui est responsable de la prise de vos fichiers XML qui définissent la mise en page, et de les convertir enView
objets. Le système d'exploitation utilise ensuite ces objets de vue d'attirer l'écran.Généralement, vous n'avez pas toujours besoin de l'utiliser directement un LayoutInflater. Android n'est plus de la mise en page de l'inflation pour vous lorsque vous appelez
setContentView()
dans leonCreate()
méthode de votre activité. De sorte que vous, en tant que programmeur, sont responsables de s'assurer que les points de vue sont gonflés. Maintenant, vous voulez gonfler le nombre de vues dans le contexte d'une ListView. L'Adaptateur classe peut faire l'inflation pour vous si vous ne voulez pas personnaliser chaque élément. Mais si vous souhaitez personnaliser les vues affichées dans une liste, vous devrez déployer manuellement chaque vue le LayoutInflater, car il n'existe aucune autre méthode que vous pouvez utiliser.Il n'y a aucun avantage à utiliser. Vous êtes tenu d'utiliser un LayoutInflater sous une forme ou sous gonfler vos XML statiques mises en page.
Alternativement, vous pouvez créer des vues de façon dynamique avec du code java. Cependant, vous devez appeler les méthodes pour définir chaque propriété pour la vue à la main. À mon avis, il est plus facile d'utiliser le XML/processus d'inflation. En outre, Android pré-traitement de vos fichiers XML au moment de la construction, de sorte que ce sera plus rapide en temps d'exécution.
Permettez-moi de clarifier.. voir modifier.
À la question "Quel est l'avantage de l'utilisation d'Inflater ?" traduit pour moi de "qu'est-Ce que l'avantage de l'utilisation d'Inflater contre la création de la vue dans le code?". Votre réponse "Il n'y a aucun avantage à utiliser [...]" serait une erreur si c'est en répondant à la "élargie" de la question.
C'est votre interprétation. Il me semble que l'OP ne sait pas ce que inflater est.. Si il/elle est peut-être vous demandez-vous si il existe des alternatives pour xml rendu du layout. Après tout, c'est tout son exemple de code est en train de faire.
Vous pouvez également utiliser java pour créer, des objets pour android, mais je ne le recommanderais pas. Voir mon edit.
OriginalL'auteur Joel
J'ai toujours eu l'ambiguïté sur pourquoi wee besoin d'utiliser inflater dans android, Pourquoi sont-ils utilisés dans android ListView pour une mise en page personnalisée ?
Ils sont utilisés pour créer les points de Vue pour chaque ligne.
Qu'est ce qu'un Inflater ?
Un service système qui crée une Vue d'une mise en page XML.
Dans le code ci-dessous je suis en train d'essayer de comprendre pourquoi Gonfleur est-il utilisé ?
Le inflater est utilisé pour créer les Vues pour les lignes.
Quel est l'avantage de l'utilisation d'Inflater ?
Par rapport à quoi? Comment voulez-vous créer le point de Vue de la mise en page XML?
Soit avec un inflater à partir d'un XML de mise en page, ou par programmation avec
new View()
. Dans la plupart des cas, vous voudrez probablement utiliser un XML de mise en page.OriginalL'auteur SimonSays
Mettre tout simplement, une inflater vous permet de créer une Vue à partir d'une ressource fichier de mise en page de sorte que vous n'avez pas besoin de tout créer par programmation.
Dans votre exemple, vous gonflez la mise en page
R.layout.list_mobile
. Cela vous permet d'accéder à tous les points de vue. Par exemple, vous appelez:En appelant
rowView.findViewById()
vous êtes en mesure d'accéder à des vues qui ont été créés au sein de cette disposition. Souvent pour les ListViews vous avez une ligne de fichier XML que vous, alors gonfler et de mettre vos données dans les vues.OriginalL'auteur trevor-e