我有这样的收入模型
@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中显示月份/年份(如果数据库中存在月份数据)?
答案 0 :(得分:1)
您可以使用2种不同的方式
您可以创建一个名为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,希望对您有所帮助。