Rien de spécial
Le blog de Régis

Un affichage de liste personnalisé

L’API de incidents-transports a évolué et indique maintenant l’identifiant de la ligne sur lequel l’incident a eu lieu. Je tire parti de cette nouvelle information, en affichant le pictogramme de la ligne concernée dans la liste.

Capture d'écran montrant l'Adapter au travail<figcaption class="wp-caption-text">L’Adapter surchargé permet de construire un affichage plus avancé</figcaption></figure>

Pour cela, il faut écrire un ListAdapter. Evidement, le mien étend le ArrayAdapter, et surcharge la méthode getView(…).

@Override
	  
public View getView(int position, View convertView, ViewGroup parent) {
		  
Incident incident = getItem(position);

View view = super.getView(position, convertView, parent);
		  
TextView textViewName = (TextView) view
				  
.findViewById(R.id.TextViewIncidentListItemLine);
		  
TextView textViewStatus = (TextView) view
				  
.findViewById(R.id.TextViewIncidentListItemStatus);
		  
textViewName.setText(incident.ligne);
		  
textViewStatus.setText(incident.status +  » @  »
				  
+ Incident.DATEFORMAT_HHMM.format(incident.lastModified));

ImageView imageViewStatus = (ImageView) view
				  
.findViewById(R.id.ImageViewIncidentListItemStatus);
		  
if (Incident.STATUS_CURRENT.equals(incident.status)) {
			  
Drawable drawable = getContext().getResources().getDrawable(
					  
android.R.drawable.ic\_dialog\_alert);
			  
imageViewStatus.setImageDrawable(drawable);
		  
} else if (Incident.STATUS_ENDED.equals(incident.status)) {
			  
Drawable drawable = getContext().getResources().getDrawable(
					  
R.drawable.check\_ok\_green);
			  
imageViewStatus.setImageDrawable(drawable);
		  
}

ImageView imageViewPicto = (ImageView) view
				  
.findViewById(R.id.ImageViewIncidentListItemPicto);
		  
// sinon reprend l’image de la ligne précédente
		  
imageViewPicto.setImageBitmap(null);
		  
if (incident.lineId > 0) {
			  
Transportation transport = TransportationProvider.TRANSPORTS
					  
.get(incident.lineId);
			  
if (transport != null && StringUtil.isNotEmpty(transport.picto)) {
				  
try {
					  
FileInputStream inputStream = getContext().openFileInput(
							  
transport.picto);
					  
Bitmap bm = BitmapFactory.decodeStream(inputStream);
					  
imageViewPicto.setImageBitmap(bm);
					  
//imageViewPicto.setBackgroundColor(android.R.color.darker_gray);
				  
} catch (FileNotFoundException e) {
					  
Log.w(TAG, « File not found: » + transport.picto);
				  
}
			  
}
		  
}
		  
return view;
	  
}