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.
<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;
}