我为“ListView”创建了一个“BaseAdapter”。我想在列表中对元素进行排序,因此我的“BaseAdapter”的构造函数会收到一个有序的元素数组。但我不知道为什么,元素没有正确排序。
public class NotificacionesAdapter extends BaseAdapter
{
private LayoutInflater inflater;
private NotificacionInfo[] notificaciones = null;
static class ViewHolder
{
TextView titulo;
TextView mensaje;
TextView fecha;
}
public static class NotificacionInfo implements Comparable<NotificacionInfo>
{
private String titulo;
private String mensaje;
private Date fecha;
public NotificacionInfo()
{
}
public String getTitulo()
{
return titulo;
}
public void setTitulo(String titulo)
{
this.titulo = titulo;
}
public String getMensaje()
{
return mensaje;
}
public void setMensaje(String mensaje)
{
this.mensaje = mensaje;
}
public Date getFecha()
{
return fecha;
}
public void setFecha(Date fecha)
{
this.fecha = fecha;
}
@Override
public int compareTo(NotificacionInfo another)
{
return another.getFecha().compareTo(this.fecha);
}
}
public NotificacionesAdapter(Context context, NotificacionInfo[] notificaciones)
{
this.inflater = LayoutInflater.from(context);
this.notificaciones = notificaciones;
Arrays.sort(this.notificaciones);
System.out.println ();
}
@Override
public int getCount()
{
return this.notificaciones.length;
}
@Override
public Object getItem(int arg0)
{
return notificaciones[arg0];
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
if (convertView == null)
{
convertView = inflater.inflate(R.layout.t_notificacion, null);
holder = new ViewHolder();
holder.titulo = (TextView) convertView.findViewById(R.id.titulo);
holder.mensaje = (TextView) convertView.findViewById(R.id.mensaje);
holder.fecha = (TextView) convertView.findViewById(R.id.fecha);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.titulo.setText(notificaciones[position].getTitulo());
holder.mensaje.setText(notificaciones[position].getMensaje());
holder.fecha.setText(DateUtil.formatDate(notificaciones[position].getFecha(), "HH:mm dd-MM-yyyy"));
return convertView;
}
public void setNotificaciones (NotificacionInfo[] notificaciones)
{
Arrays.sort(this.notificaciones);
this.notificaciones = notificaciones;
}
提前致谢
答案 0 :(得分:0)
我认为你的解决方案很复杂。放轻松。在构造函数中复制数组,然后使用带有条件的java.util.Comparator;
对其进行排序。你会在这个网站上找到很多比较器的例子。
答案 1 :(得分:0)
Arrays.sort(this.notificaciones);
this.notificaciones = notificaciones;
为什么首先对对象进行排序,并使用未排序列表覆盖它们?