如何按月/年过滤数据

时间:2018-07-19 21:05:12

标签: 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(name = "Month")
    public int month;

    @Column(name = "Year")
    public int year;
}

我想从数据库中过滤数据,如下所示。在listView这样的月/年 enter image description here

然后在ListViewItem上单击“我想显示选定月份/年份的所有数据”。

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

2 个答案:

答案 0 :(得分:1)

您可以使用2种不同的方式

  1. 您可以创建一个名为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 list = List<Income>()
                list.add(it)
                map[month] = list
            }
        return map
    }
    

其中getMonthOf是一种使用Date类提取收入的年份+嘴巴的方法

然后,您只需使用RecyclerView,然后创建您的自定义列表

更好地使用List,因为它的项目也是list。 参见here

有关解析日期,请参见here

2。除了将日期保存在一个字段中之外,您还可以将其保存在数据库中的三个字段中(年,坐骑和天),并且可以像我在这里发送的第一种方式简单地过滤列表并创建地图

所以它是getMonthOf代码,用于获取每年的每个月的唯一字符串:

fun getMonthOf(income:Income) = "${income.year}/${income.month}"

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

答案 1 :(得分:0)

您需要为listview上的此类操作创建自定义Listview,

您可以参考此Link,希望对您有所帮助。