【发布时间】:2019-04-11 08:25:36
【问题描述】:
这会使RecyclerView 空白:
public void onTicketsFetched(SupportTicketModel[] fetchedTickets) {
ArrayList<SupportTicketModel> ticketModelsUpdated = new ArrayList<>(Arrays.asList(fetchedTickets));
ticketModels.clear();
ticketModels = ticketModelsUpdated;
ticketAdapter.notifyDataSetChanged();
}
而这有效:
public void onTicketsFetched(SupportTicketModel[] fetchedTickets) {
ArrayList<SupportTicketModel> ticketModelsUpdated = new ArrayList<>(Arrays.asList(fetchedTickets));
ticketModels.clear();
ticketModels.addAll(ticketModelsUpdated);
ticketAdapter.notifyDataSetChanged();
}
区别:
第一:ticketModels = ticketModelsUpdated;
第二个:ticketModels.addAll(ticketModelsUpdated);
据我了解,ticketModels 和 ticketModelsUpdated 完成后,ticketModels = ticketModelsUpdated 基本上将引用同一个列表。所以从技术上讲,ticketModels 的每个值都应该是ticketModelsUpdated。但这给了我错误。有什么想法吗?
我了解ticketMOdels.AddAll(ticketModelsUpdated) 将创建两个相同值的列表。它工作正常。
怎么了?
【问题讨论】:
-
将“ArrayList
ticketModelsUpdated”声明为全局,然后将其分配为“ticketModels = ticketModelsUpdated;”因为您在 void 方法中分配您的列表,该方法是本地的并且会被破坏。所以你必须全局声明它 -
@android 我做到了,但还是不行!
标签: android arraylist android-recyclerview