2010-02-16 3 views
22

Im en tirant une liste d'objets de produit à partir d'un appel de base de données et je veux construire un ListView des données dans mon activité avec un en-tête et un pied de non-défilement. Chaque rangée comprendra une vignette de produit, des données et un bouton disposés horizontalement. Je comprends qu'en utilisant le ListView je peux gonfler chaque rangée en utilisant une disposition séparée. La plupart des exemples que j'ai vus en utilisant ListView montrent simplement un tableau simple de chaînes qui remplissent toute la vue de l'activité, mais la plupart des exemples du monde réel seront plus complexes et je ne trouve pas de bons exemples qui expliquent comment toutes ces pièces s'emboîtent.Exemple de ListView complexe avec des données complexes et une mise en page complexe de chaque ligne?

Quelqu'un a-t-il des pointeurs vers un exemple de code avec une bonne explication?

Répondre

3

La méthode la plus simple pour avoir une ligne complexe dans ListView est via SimpleAdapter. Il y a un certain nombre d'exemples pour cela.

pour forcer le ListView pour remplir la partie restante de l'écran, régler les propriétés de la manière suivante:

Utiliser un LinearLayout.

Sur la vue de la liste:

android:layout_height="fill_parent", 
android:height="0dp", 
android:layout_weight="1" 

Sur tous les autres widgets:

android:layout_height="wrap_content" 

Ne pas définir une hauteur ou layout_weight

+0

Un autre exemple qui n'affiche pas le format XML principal non plus. Normalement, une application aura un en-tête, une liste d'éléments et peut-être d'autres widgets près du bas. Je ne sais pas comment faire pour que les widgets inférieurs restent en bas et ne prennent pas en charge le parent entier. Je veux que l'affichage de liste se développe pour remplir l'espace entre les widgets d'en-tête et de pied de page mais après cela il devrait juste défiler sans les affecter. – Eno

+0

J'ai raté cette partie de la question, voir les modifications. –

+0

lien ne fonctionne pas s'il vous plaît vérifier votre lien. – Deepak

6
private static class CustomCursorAdapter extends CursorAdapter { 

    protected ListView mListView; 

    protected static class RowViewHolder { 
     public TextView mTitle; 
     public TextView mText; 
    } 

    public CustomCursorAdapter(Activity activity) { 
     super(); 
     mListView = activity.getListView(); 
    } 

    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 
     // do what you need to do 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     View view = View.inflate(context, R.layout.row_layout, null); 

     RowViewHolder holder = new RowViewHolder(); 
     holder.mTitle = (TextView) view.findViewById(R.id.Title); 
     holder.mText = (TextView) view.findViewById(R.id.Text); 

     holder.mTitle.setOnClickListener(mOnTitleClickListener); 
     holder.mText.setOnClickListener(mOnTextClickListener); 

     view.setTag(holder); 

     return view; 
    } 
} 
Questions connexes