创建一个由两个 ArrayList 一次提供的 ListView 或两个在 Android 中显示为一个的 ListView?
Create a ListView that is fed by two ArrayLists at once OR two ListViews that appear as one in Android?
基本上,我想做什么:
- 一次由两个 ArrayList 提供的 listView,每个列表放在一个部分中
- 两个 ListView 在用户看来是一个,因此如果您滚动到第一个 ListView 的末尾,您可以顺畅地向下滚动到第二个 listView。
然而我的知识落后于这样做。
以下是我需要解决的问题的一些细节,以及我为什么要寻求上述解决方案。
我正在尝试在 android 中构建一个相当复杂的列表视图。它的数据目前存储在一个ArrayList中。每行的数据由自定义对象提供。我按日期对条目进行排序,
效果很好。我现在需要
- 将 table 分成两部分 根据我的自定义对象提供的第二个日期是否过去(所以基本上 基于布尔值)
- 在自定义设计中添加分隔符在这两个部分之间
- 如果我的两个部分中的任何一个是空的,我需要添加 相应的占位符 以显示消息
这需要一个涉及两个列表的解决方案,对条目进行排序和处理设计会更容易。
如果您问我尝试了什么:我已经通过将相关日期映射到未来的方式来解决它,因此它们位于列表的顶部
Collections.sort(newsList, new Comparator<News>() {
@Override
public int compare(News p1, News p2) {
DateTime startDate = new DateTime(p2.getValidUntil());
DateTime endDate = new DateTime(p1.getValidUntil());
if(Util.isEntryRelevant(p1)){
endDate = endDate.plusDays(1000);
}
if(Util.isEntryRelevant(p2)){
startDate.plusDays(1000);
}
Minutes diff = Minutes.minutesBetween(endDate, startDate);
diff.getMinutes();
return diff.getMinutes();
}
});
这可能是我迄今为止编写的最狡猾的一段代码。我想到了更多的解决方法,但它们似乎都变得混乱和不干净。
本质上,您必须实现一个自定义的 BaseAdapter,它知道迭代您的两个数据源。您可以使用 this 之类的东西来节省一些时间,您可以向其中添加几个常规适配器。
基本上,我想做什么:
- 一次由两个 ArrayList 提供的 listView,每个列表放在一个部分中
- 两个 ListView 在用户看来是一个,因此如果您滚动到第一个 ListView 的末尾,您可以顺畅地向下滚动到第二个 listView。
然而我的知识落后于这样做。
以下是我需要解决的问题的一些细节,以及我为什么要寻求上述解决方案。
我正在尝试在 android 中构建一个相当复杂的列表视图。它的数据目前存储在一个ArrayList中。每行的数据由自定义对象提供。我按日期对条目进行排序, 效果很好。我现在需要
- 将 table 分成两部分 根据我的自定义对象提供的第二个日期是否过去(所以基本上 基于布尔值)
- 在自定义设计中添加分隔符在这两个部分之间
- 如果我的两个部分中的任何一个是空的,我需要添加 相应的占位符 以显示消息
这需要一个涉及两个列表的解决方案,对条目进行排序和处理设计会更容易。
如果您问我尝试了什么:我已经通过将相关日期映射到未来的方式来解决它,因此它们位于列表的顶部
Collections.sort(newsList, new Comparator<News>() {
@Override
public int compare(News p1, News p2) {
DateTime startDate = new DateTime(p2.getValidUntil());
DateTime endDate = new DateTime(p1.getValidUntil());
if(Util.isEntryRelevant(p1)){
endDate = endDate.plusDays(1000);
}
if(Util.isEntryRelevant(p2)){
startDate.plusDays(1000);
}
Minutes diff = Minutes.minutesBetween(endDate, startDate);
diff.getMinutes();
return diff.getMinutes();
}
});
这可能是我迄今为止编写的最狡猾的一段代码。我想到了更多的解决方法,但它们似乎都变得混乱和不干净。
本质上,您必须实现一个自定义的 BaseAdapter,它知道迭代您的两个数据源。您可以使用 this 之类的东西来节省一些时间,您可以向其中添加几个常规适配器。