我需要一点帮助!
我已按照this指南获取了一些结果。
设置了适配器,初始化了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
答案 0 :(得分:2)
好的,我终于在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;
}
答案 1 :(得分:1)
你有一个嵌套的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件物品都是如此。我不知道你的数据是什么,所以我无法为你验证这一点。
可能发生的情况是,通过不清除列表,您每次都会向视图添加越来越大的列表。在向列表添加新列表之前清除列表,您应该只呈现所需的列表。