Java 在RecyclerView中添加日期部分
我需要一点帮助 我遵循指南获得了一些结果 适配器已设置,recyclerview已初始化,但我遇到了问题 在列表中显示正确的数据 下面是我想做的: 首先,我将从api获取的数据临时存储在列表中,并创建一个日期数组列表。当然,我正在从数组列表中删除重复的日期,因为有些项目是按相同的日期排序的 下面是一些代码,以及我是如何填充recyclerview并在部分中按日期排序项目的:Java 在RecyclerView中添加日期部分,java,android,android-recyclerview,Java,Android,Android Recyclerview,我需要一点帮助 我遵循指南获得了一些结果 适配器已设置,recyclerview已初始化,但我遇到了问题 在列表中显示正确的数据 下面是我想做的: 首先,我将从api获取的数据临时存储在列表中,并创建一个日期数组列表。当然,我正在从数组列表中删除重复的日期,因为有些项目是按相同的日期排序的 下面是一些代码,以及我是如何填充recyclerview并在部分中按日期排序项目的: // dates - array list of dates(16 February, 20 February..) //
// dates - array list of dates(16 February, 20 February..)
// mEvents - temporarily list with size of 8 items
// originalList - list of events ordered by date
for (String date : dates) {
originalList.clear();
for (Event event2 : mEvents) {
// Checking if item's date from temp. list is equal with
// iterated date and adding to original list
if (date.equals(event2.getDate())) {
originalList.add(event2);
}
}
// Attaching section to adapter with iterated date and array list related to that date
EventSection eventSection
= new EventSection(R.layout.lst_item_event_header, R.layout.lst_item_event_v2, date, originalList, getActivity());
mSectionedRecyclerViewAdapter.addSection(eventSection);
}
这里的问题是,我从原始列表中得到了每个日期部分的最后2项。我错过了什么
编辑:
// I need to sort items by these dates into sections
Dates:: [2017-02-16, 2017-02-17, 2017-02-28, 2017-02-22, 2017-02-20]
Event date:: 2017-02-16
Event date:: 2017-02-16
Event date:: 2017-02-17
Event date:: 2017-02-17
Event date:: 2017-02-28
Event date:: 2017-02-22
Event date:: 2017-02-20
Event date:: 2017-02-20
你确实有一个嵌套的for循环,所以我猜问题就在那里的某个地方。如果你想要的话,仔细检查一下里面的情况
for (String date : dates) {
// Clear the list here so you render a new list of dates that equal the
// event date with the date of this iteration.
originalList.clear();
for (Event event2 : mEvents) {
if (date.equals(event2.getDate())) { // Check this condition
originalList.add(event2);
}
}
...
}
如果每次都是这样的话,你最终会得到64个项目。我不知道你的数据是什么,所以我无法为你验证
可能发生的情况是,如果不清除列表,每次都会向视图中添加越来越大的列表。在添加新列表之前,请先清除该列表,您应该只呈现所需的列表。好的,借助autor库的示例,我终于找到了解决方案。因此,如果有其他人像我一样遇到麻烦,这可能会帮助你:
for (String date : dates) {
originalList = getEventsWithDate(date);
if (originalList.size() > 0) {
mSectionedRecyclerViewAdapter.addSection(new EventSection(date, originalList, getActivity()));
}
}
private List<Event> getEventsWithDate(String date) {
List<Event> events = new ArrayList<>();
for (Event event : mEvents) {
if (date.equals(event.getDate())) {
events.add(event);
}
}
return events;
}
for(字符串日期:日期){
originalList=getEventsWithDate(日期);
如果(originalList.size()>0){
msectionedRecyclServiceAdapter.addSection(新的EventSection(日期、原始列表、getActivity());
}
}
私有列表getEventsWithDate(字符串日期){
List events=新建ArrayList();
对于(事件:mEvents){
if(date.equals(event.getDate())){
事件。添加(事件);
}
}
返回事件;
}
嵌套循环完成后是否应清除原始列表?是的,很可能就是这样。现在呈现完整列表,然后添加更多内容并再次打印整个列表。我将在稍后扩展我的答案。现在,我为每个部分获得两个项目,并且所有项目都是相同的。很抱歉,我无法进一步帮助您,但我很高兴您能找到答案。别忘了将你的答案设置为正确答案,这样其他人就可以很容易地找到正确答案:)无论如何,谢谢雷蒙德!