J'ai une arraylist typeBeanArrayList où l'élément est comme une date: par exemple:
typeBeanArrayList = database.getSingleCustomerDetail(c_id!!) //get data from SQlite database creditListAdapter = CreditListAdapter(typeBeanArrayList) rv_credit_list!!.adapter = creditListAdapter //Bind data in adapter
Comment puis-je trier dans ordre décroissant.
Code:
[30-03-2012, 28-03-2013, 31-03-2012, 2-04-2012, ...]
Merci d'avance ...
4 Réponses :
Utilisez
[30-03-2012, 28-03-2013, 31-03-2012, 2-04-2012, ...].sortByDescending { it.length }
si vous voulez trier par paramètre, utilisez dans ce cas la longueur
[30-03-2012, 28-03-2013, 31-03-2012, 2-04-2012, ...].sortDescending()
Je pense que l'OP veut trier par ordre décroissant chronologique , ce qui signifie qu'ils ne peuvent pas utiliser .sortDescending () car il triera par alphabétique ordre. Ils doivent utiliser sortByDescending , transformant la chaîne en un objet Date, qui peut ensuite être trié à volonté
J'utilise juste typeBeanArrayList.sortByDescending{it.date} et les données s'affichent dans l'ordre décroissant. Merci @svkaka
Si vous avez une liste de String représentant des dates, une façon de les trier par ordre décroissant est:
[28-03-2013, 2-04-2012, 31-03-2012, 30-03-2012]
Ceci imprimera:
val dates = listOf("30-03-2012", "28-03-2013", "31-03-2012", "2-04-2012")
val dateTimeFormatter: DateTimeFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy")
val result = dates.sortedByDescending {
LocalDate.parse(it, dateTimeFormatter)
}
println(result)
Notez que les méthodes sortedByXXX renvoient une nouvelle liste, c'est-à-dire qu'elles ne trient pas sur place
p >
oui, le premier article appartient à l'année 2013, tous les autres appartiennent à 2012
c'est long, j'utilise juste une ligne: typeBeanArrayList.sortByDescending{it.date} et cela fonctionne parfaitement. Merci pour votre réponse.
Je confond juste un peu je regarde juste les dates mais il y a aussi un mois pour décroissant.
Oui, votre code fonctionne et est plus court, et c'est parce que votre liste ne contient pas de String mais des instances d'un type quelconque qui a une propriété date (renvoyant un < code> Date ou objet LocalDate , je suppose)
NON. Dans la classe Bean, je peux définir la date comme une chaîne comme var date: String? = "" . aussi j'ajoute la date sous forme de chaîne. aussi je récupère la date sous forme de chaîne.
@ MR.K Je suis désolé mais je ne suis pas sûr d'avoir bien compris: la date est-elle de type String ? Si tel est le cas, vous triez par ordre alphabétique au lieu de par ordre chronologique (ce qui peut être ce que vous voulez, cependant)
nécessite api 26+
Merci @svkaka pour les informations.
Je viens de remarquer une ligne de @svkaka answer: .sortByDescending {it.length} .
et moi changeons mon code comme:
typeBeanArrayList.sortByDescending{it.date}
Le tri fonctionne parfaitement.
Comment est-il trié par date? Cette réponse est fausse, elle prend simplement la longueur de la chaîne et la trie par ordre décroissant
Vous pouvez utiliser quelque chose comme ceci si vous utilisez un modèle personnalisé
typeBeanArrayList.sortedWith(compareByDescending<YourModel> { it.date() })
Je ne sais pas grand-chose sur kotlin mais je suis presque sûr que vous pourriez écrire votre propre comparateur kotlination.com/kotlin/...