我正在開發一個應用程序,其中包含一個票證列表,有用戶的添加票證和刪除票證選項。添加選項工作正常,但刪除選項不起作用,這是票證列表代碼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
提交
取消