Java 如何按月/年筛选数据

Java 如何按月/年筛选数据,java,android,listview,Java,Android,Listview,我有一个这样的收入模型 @Table(name = "Income") public class Income extends Model { @Column(name = "AmountDate") public String amountDate; @Column(name = "Amount") public int amount; @Column(name = "Day") public int day; @Column(n

我有一个这样的收入模型

@Table(name = "Income") public class Income extends Model {
    @Column(name = "AmountDate")
    public String amountDate;

    @Column(name = "Amount")
    public int amount; 

    @Column(name = "Day")
    public int day;

    @Column(name = "Month")
    public int month;

    @Column(name = "Year")
    public int year;
}
我想从数据库中筛选数据,如下所示。在listView中,月份/年份如下

并在ListViewItem上单击我想显示所选月份/年份的所有数据


所以,我的问题是,如果listView中的数据库中存在月数据,如何显示月/年?

您需要为listView上的此类操作创建自定义listView


你可以参考这篇文章,希望对你有所帮助。

你可以使用两种不同的方法

您可以创建一个名为group的函数,其代码如下所示:

fun group(list : List<Income>) : Map<String,List<Income>> {    
    val map = HashMap<String,List<Income>>()
    list.foreach { 
        val month = getMonthOf(it.amountDate)
        if(map.contains(mounth)){
            map[month].add(it);
        } else {
            val arrayList = ArrayList<Income>()
            arrayList.add(it)
            map[month] = arrayList
        }
     }
  return map
}

现在,您只需将地图发送到适配器并列出列表即可

这是如何过滤的?看起来你只是在显示数据。当然,现在知道amountDate包含,很难说您想做什么。-为什么amountDate是字符串而不是日期类型,例如java.util.date或java.time.LocalDate?我想按月/年对数据进行分组,单击listview项后,打开包含所选月/年所有数据的新片段。。我在日期上遇到了一些问题,所以我决定这样保存它。如果你想分组,为什么要说过滤器?请编辑问题以澄清它。我已经为天、月、年设置了单独的字段。我会像你说的那样尝试。。。谢谢。你能用我添加的这三个字段更新你的代码吗。。谢谢你的回答,我需要把这个kotlin代码转换成java。。这需要一些时间。
fun getMonthOf(income:Income) = "${income.year}/${income.month}"