我正在开发一个应用程序,其中包含一个票证列表,有用户的添加票证和删除票证选项。添加选项工作正常,但删除选项不起作用,这是票证列表代码public class TicketList { private List<Ticket> ticketList; public TicketList() { ticketList = new ArrayList<>(); } public List<Ticket> getTicketList() { return ticketList; } public void setTicketList(List<Ticket> ticketList) { this.ticketList = ticketList; } public void addTicketToList(Ticket ticket) { ticketList.add(ticket); } public void removeFromList(Ticket ticket) { ticketList.remove(ticket); } @Override public String toString() { return "TicketList{" + "ticketList=" + ticketList + '}'; }}另一个活动中的删除函数不起作用:private void deleteTicket() { TicketList ticketList = MyPreferencesManager.getInstance(this).getTicketList(); Ticket ticket = MyPreferencesManager.getInstance(this).getTicket(); ticketList.removeFromList(ticket); MyPreferencesManager.getInstance(this).putTicketList(ticketList);}虽然 add 函数工作正常:private void saveTicket() { TicketList ticketList = MyPreferencesManager.getInstance(this).getTicketList(); Ticket ticket = new Ticket(); ticket.setUsername(username.getText().toString()); ticket.setPassword(password.getText().toString()); ticketList.addTicketToList(ticket); MyPreferencesManager.getInstance(this).putTicketList(ticketList);}谁能告诉我删除或删除功能有什么问题?
1 回答
皈依舞
TA贡献1851条经验 获得超3个赞
这是因为当您使用以下代码时:
ticketList.remove(ticket);
删除方法将在删除之前检查列表中是否有确切的对象项。因此,在您尝试从列表中删除票证对象之前,您的票证对象可能已经更改。
您可以从列表文档中看到详细信息:
公共抽象布尔删除(对象 o)
从此列表中删除指定元素的第一个匹配项(如果存在)(可选操作)。如果此列表不包含该元素,则它保持不变。更正式地说,删除索引为i最低的元素,使得(o==null ? get(i)==null : o.equals(get(i)))(如果存在这样的元素)。如果此列表包含指定的元素(或者等效地,如果此列表由于调用而发生更改),则返回 true。
你需要的可能是List.remove(int index)。
添加回答
举报
0/150
提交
取消