Implémentez un adaptateur personnalisé pour votre classe:
public class MyClassAdapter extends ArrayAdapter<MyClass> {
private static class ViewHolder {
private TextView itemView;
}
public MyClassAdapter(Context context, int textViewResourceId, ArrayList<MyClass> items) {
super(context, textViewResourceId, items);
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(this.getContext())
.inflate(R.layout.listview_association, parent, false);
viewHolder = new ViewHolder();
viewHolder.itemView = (TextView) convertView.findViewById(R.id.ItemView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
MyClass item = getItem(position);
if (item!= null) {
// My layout has only one TextView
// do whatever you want with your string and long
viewHolder.itemView.setText(String.format("%s %d", item.reason, item.long_val));
}
return convertView;
}
}
Pour ceux qui ne sont pas très familiers avec le framework Android, cela est expliqué plus en détail ici: https://github.com/codepath/android_guides/wiki/Using-an-ArrayAdapter-with-ListView .
Nikola Smiljanić
la source
textViewResourceId
n'est pas utilisé ci-dessus?Vous pouvez simplement ajouter une
toString()
méthode à MyClass, par http://developer.android.com/reference/android/widget/ArrayAdapter.html :la source
MyClass
, vous devrez refactoriser. Enfin, c'est généralement une mauvaise idée de lier la logique de présentation à vos modèles. Les modèles ne doivent pas savoir comment ils sont présentés à l'utilisateur.MyClass
vous obligerait à ajouter une classe dédiée appeléeMyClassView
qui encapsule le modèle sous-jacent (et fournit l'toString( )
implémentationJe pense que c'est la meilleure approche. L'utilisation de la classe ArrayAdapter générique et étend votre propre adaptateur d'objet est aussi simple que suit:
et voici votre adaptateur (exemple):
et enfin, comment l'initialiser:
J'ai créé un ArrayAdapter personnalisable Gist avec la mise en page TextView gravity:
https://gist.github.com/m3n0R/8822803
la source
Sous- classez ArrayAdapter et remplacez la méthode getView () pour renvoyer votre propre vue qui contient le contenu que vous souhaitez afficher.
la source
Voici un exemple rapide et sale de la façon d'utiliser un ArrayAdapter si vous ne voulez pas vous soucier d'étendre la classe mère:
la source