Comment faire pour Trier les Éléments ListView par Date
Dans mon application j'ai à vous montrer une vue de liste qui indique la Date et une Chaîne de valeur.Un Modèle de classe est utilisé pour fournir des valeurs de la liste du réseau. Date.La Date de valeur est dérivée à l'aide d'une valeur à partir de la classe de Modèle à la Classe d'Adaptateur.Faire apparaître l'affichage de la liste triée par date dans l'ordre croissant et de mettre en évidence le point de vue qui est le plus proche de la date actuelle.mettre en évidence, dans le sens de changer la couleur d'arrière-plan de point de vue particulier qui est immédiatement supérieur à ou égal à la date actuelle.
BaseAdapter Classe
private ArrayList<Model> mListItems;
private Activity mActivity;
private LayoutInflater mInflater;
private Integer[] mListIcons;
private Date DateOfBirth;
private int NumberOfMonths;
private ArrayList<Integer> SottList;
List<Date> dateList = new ArrayList<Date>();
public Adapter(Activity mActivity, Date DateOfBirth,ArrayList<VaccinationScheduleModel> mListItems) {
// super();
this.mActivity = mActivity;
this.mListItems=mListItems;
this.DateOfBirth=DateOfBirth;
mInflater = (LayoutInflater) mActivity.getLayoutInflater();
}
@Override
public int getCount() {
return mListItems.size();
}
@Override
public Object getItem(int position) {
return mListItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.custom_lv_vacc_schedule,
parent, false);
} else {
convertView = convertView;
}
String atrNumberOfMonths=mListItems.get(position).getmNumberOfMonths();
NumberOfMonths = Integer.parseInt(atrNumberOfMonths);
Calendar cal = Calendar.getInstance();
cal.setTime(DateOfBirth);
cal.add(Calendar.MONTH, NumberOfMonths);
Date result = cal.getTime();
dateList.add(result);
String dayOfTheWeek = (String) android.text.format.DateFormat.format("EEEE", result);//Thursday
String stringMonth = (String) android.text.format.DateFormat.format("MMM", result); //Jun
String intMonth = (String) android.text.format.DateFormat.format("MM", result); //06
String year = (String) android.text.format.DateFormat.format("yyyy", result); //2013
String day = (String) android.text.format.DateFormat.format("dd", result); //20
System.out.println("19102015:VaccinationScheduleAdapter" + result);
TextView txtVaccTitle = (TextView) convertView.findViewById(R.id.txtVaccTitle);
TextView txtVaccMonth = (TextView) convertView.findViewById(R.id.txtVaccMonth);
TextView txtVaccDay= (TextView) convertView.findViewById(R.id.txtVaccDay);
TextView txtVaccYear = (TextView) convertView.findViewById(R.id.txtVaccYear);
ImageView imgIcon = (ImageView) convertView.findViewById(R.id.imgIcon);
imgIcon.setBackgroundResource(R.drawable.calendar_icon);
txtVaccTitle.setText(mListItems.get(position).getmDescription());
txtVaccMonth.setText(stringMonth);
txtVaccDay.setText(day);
txtVaccYear.setText(year);
Collections.sort(dateList);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
return convertView;
}
Quelqu'un peut-il m'aider?Merci d'Avance
- si vous êtes d'extraire des données de base de données, puis faire une requête pour que
- Je ne suis pas à l'aide de la base de données
- qu'utilisez-vous? d'où êtes-vous d'obtenir les dates?
- Sur le constructeur d'appel, je vais envoyer un Date.By à l'aide de cette date que la base d'autres dates sont dérivées
- votre dateList me rendre confus. la liste que vous souhaitez trier..mListItem ou dateList
InformationsquelleAutor Noufal M | 2015-10-19
Vous devez vous connecter pour publier un commentaire.
Où vous appelez votre adaptateur Classe d'utilisation:
Votre CustomComparator peut ressembler à ceci:
Pour mettre en évidence votre première ou les deux premières lignes, écrire ce code à l'intérieur de votre adaptateur méthode getView. Pas besoin de régler quoi que ce soit ici.
Espère que cela vous aide.
Si vous rencontrez un problème, juste un commentaire.
Si votre problème est uniquement un problème avec le tri d'une liste, vous pouvez utiliser un
Comparator
:Il serait utile si vous affichez le code utilisé pour obtenir la liste des articles et votre
Model
classe.Mettre
Collections.sort(dateList)
surgetView
est totalement faux, vous devez générer une méthode de tri sur votre carte et l'utiliser à l'extérieur de l'adaptateur (peut-être sur le fragment de démarrage ou onResume) assurez-vous d'appelernotifyDataSetChanged
sur la carte à droite après.Cette vidéo m'aide beaucoup à trier par date:
https://www.youtube.com/watch?v=iTGtk1AuQCI
C'est sur la façon de trier, mais avec
for
consolidés.J'ai d'abord avoir une
arrayList
declaseRenta
éléments et chacun d'entre eux contiennent de la date dans unString
. J'ai d'abord convertir la chaîne en une date et après j'ai le temps de millis, après que je compare le temps dans millis et de réorganiser laarrayRentas
. À la fin je obtenir un tableau declaseRenta
éléments triés par la date de chacun.