2012-04-14 4 views
0

Je suis nouveau sur Android et j'ai une question simple. Actuellement, je travaille sur une application de produits qui permet aux utilisateurs d'ajouter, de supprimer et de parcourir une variété de produits. L'application utilise un fichier de présentation XML prédéfini en tant que modèle qui remplit tout l'écran pour afficher les détails du produit actuel. Lorsque l'utilisateur ajoute un nouveau produit, je souhaite réutiliser le même fichier de disposition, mais le remplir avec les informations du nouveau produit. En outre, je souhaite conserver les produits précédemment ajoutés (par exemple, une ArrayList) et l'utilisateur peut parcourir cette liste en glissant horizontalement (de gauche à droite ou de droite à gauche). Maintenant, quelle est la meilleure chose à utiliser pour représenter chaque produit (Vue, sous-vue, ... etc.), Et comment réutiliser le même fichier de mise en page basé sur XML pour afficher les détails de différents produits. Veuillez excuser mon anglais et merci d'avance pour l'aideRéutiliser un fichier de mise en page XML pour afficher des informations différentes (Application Android)

+0

si vous avez une mise en page commune, quel problème utilisez-vous pour insérer une mise en page commune dans toutes les autres mises en page –

Répondre

1

Vous pouvez créer une nouvelle classe qui étend le ArrayAdapter, puis remplacer la méthode getView() pour gonfler votre disposition personnalisée. getView() renverra la vue pour une seule ligne. De cette façon, vous pouvez réutiliser votre mise en page. Donc, il ressemblera à quelque chose comme:

public class ProductAdapter extends ArrayAdapter<Product> { 

    private LayoutInflater li; 

    public ProductAdapter(Context context, List<Product> products) { 
     super(context, 0, products); 
     li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     // Get the product of the position 
     Product product = getItem(position); 

     View v = convertView; 
     if (v == null) { 
      // Your custom layout file for a single row in the list. 
      v = li.inflate(R.layout.product_row, null); 
     } 

     // Populate your view here. Use v.findViewById(). 

     return v; 
    } 

} 

Pour afficher la liste dans une utilisation de ListActivity:

// The variable products is your initial list of products. 
ProductAdapter adapter = new ProductAdapter(this, products); 
setListAdapter(adapter); 

Lorsque vous ajoutez un produit que vous pouvez ajouter à votre ArrayAdapter en appelant soit le adapter.add () (si vous voulez ajouter votre produit à la fin de la liste) ou insert() (pour spécifier où dans la liste des produits que vous voulez insérer le nouveau produit) la méthode sur le ProductAdapter. Ensuite, vous pouvez appeler adapter.notifyDataSetChanged() pour indiquer à votre adaptateur que les données ont été modifiées et que la liste doit être actualisée.

1

Ce que vous décrivez est implémenté par le ViewPager. Il y a un blog post sur le site du développeur en plus de la référence de l'API. Pour l'implémenter, vous devez créer une sous-classe PagerAdapter afin de renseigner les détails de chaque vue pour ViewPager.

Questions connexes