Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在RecyclerView中添加日期部分_Java_Android_Android Recyclerview - Fatal编程技术网

Java 在RecyclerView中添加日期部分

Java 在RecyclerView中添加日期部分,java,android,android-recyclerview,Java,Android,Android Recyclerview,我需要一点帮助 我遵循指南获得了一些结果 适配器已设置,recyclerview已初始化,但我遇到了问题 在列表中显示正确的数据 下面是我想做的: 首先,我将从api获取的数据临时存储在列表中,并创建一个日期数组列表。当然,我正在从数组列表中删除重复的日期,因为有些项目是按相同的日期排序的 下面是一些代码,以及我是如何填充recyclerview并在部分中按日期排序项目的: // dates - array list of dates(16 February, 20 February..) //

我需要一点帮助

我遵循指南获得了一些结果

适配器已设置,recyclerview已初始化,但我遇到了问题 在列表中显示正确的数据

下面是我想做的:

首先,我将从api获取的数据临时存储在列表中,并创建一个日期数组列表。当然,我正在从数组列表中删除重复的日期,因为有些项目是按相同的日期排序的

下面是一些代码,以及我是如何填充recyclerview并在部分中按日期排序项目的:

// 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())){
事件。添加(事件);
}
}
返回事件;
}

嵌套循环完成后是否应清除原始列表?是的,很可能就是这样。现在呈现完整列表,然后添加更多内容并再次打印整个列表。我将在稍后扩展我的答案。现在,我为每个部分获得两个项目,并且所有项目都是相同的。很抱歉,我无法进一步帮助您,但我很高兴您能找到答案。别忘了将你的答案设置为正确答案,这样其他人就可以很容易地找到正确答案:)无论如何,谢谢雷蒙德!