gpt4 book ai didi

java - 从 ArrayList 中删除元素

转载 作者:行者123 更新时间:2023-12-01 11:59:07 25 4
gpt4 key购买 nike

我有一个名为 User 的 Singleton 类,该用户有一个 ArrayList。现在我有一个 ListView,显示用户的元素,选择它们,然后按一个按钮,它将删除选定的元素;在这种情况下:

    view.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
view.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {

ArrayList<Chat> elementsToErase= new ArrayList<Chat>();
@Override
public void onItemCheckedStateChanged(ActionMode actionMode, int i, long l, boolean b) {



if(b) {
elementsToErase.add((Chat)view.getItemAtPosition(i));


}
else{
elementsToErase.remove((Chat)view.getItemAtPosition(i));

}




}

@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
MenuInflater inflater = actionMode.getMenuInflater();
inflater.inflate(R.menu.menu_chat_edit, menu);
view.setSelected(true);
return true;
}

@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
return false;
}

@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.delete_chat:
Arraylist<Chat> userElement = User.getIstance().getChats();
for (int i = 0; i < elementsToRemove.size(); ++i) {
userElement.removeChat(elementsToRemove.get(i));



}

adapter.notifyDataSetChanged();
actionMode.finish();
return true;

default:
return false;
}

}

在删除之前,如果我创建一个新的聊天并尝试在其中添加一些文本,它会起作用。删除后,如果我创建一个新的聊天并尝试添加一些文本,它不会添加文本。

这就是我从 ArrayList 中删除元素的方法:

   for(int i = 0 ; i < chats.size();++i){
if(chats.get(i).equals(chat)) {
return chats.remove(i);
}
}
return new Chat("null",0);
}

我有可能“破坏”对 User ArrayList 的引用吗?

最佳答案

如果你使用这个:

Arraylist<Chat> userElement = User.getIstance().getChats();

userElementUser.getIstance().getChats() 都将使用相同的下划线array,对其中之一进行修改将反射(reflect)在另一个。

如果您想要两个不同的对象,请创建第二个ArrayList,如下所示:

Arraylist<Chat> userElement = new ArrayList <Char>(User.getIstance().getChats());

此外,这个循环:

   for(int i = 0 ; i < chats.size();++i){
if(chats.get(i).equals(chat)) {
return chats.remove(i);
}
}

会抛出ConcurrentModificationException,如果你想在迭代List时从List中删除Object,你必须使用迭代器

关于java - 从 ArrayList 中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28119805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com