Je tire une liste d'objets de produit à partir d'un appel de base de données et je veux créer une ListView des données de mon activité avec un en-tête et un pied de page sans défilement. Chaque ligne se composera d'une vignette de produit, de certaines données et d'un bouton disposé horizontalement. Je comprends qu'en utilisant ListView, je peux gonfler chaque ligne en utilisant une mise en page distincte.
La plupart des exemples que j'ai vus en utilisant ListView montrent juste un simple tableau de chaînes qui remplissent la vue entière de l'activité, mais la plupart des exemples du monde réel seront plus complexes et je ne trouve aucun bon exemple expliquant comment toutes ces pièces s'adaptent ensemble.
Quelqu'un at-il des pointeurs pour échantillonner du code avec une bonne explication?
Un exemple qui m'a beaucoup aidé:
http://Android-developers.blogspot.com/2009/02/Android-layout-tricks-1.html
J'espère que cela vous sera également utile.
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;
}
}
Le moyen le plus simple d'avoir une ligne complexe dans un ListView est via un SimpleAdapter. Il existe un certain nombre d'exemples pour cela.
Pour forcer ListView à remplir la partie restante de l'écran, définissez les propriétés comme suit:
Utilisez un LinearLayout.
Dans la vue liste:
Android:layout_height="fill_parent",
Android:height="0dp",
Android:layout_weight="1"
Sur tous les autres widgets:
Android:layout_height="wrap_content"
Ne définissez pas de hauteur ou de poids de disposition