У меня есть класс Singleton под названием User, у этого пользователя есть ArrayList. теперь у меня есть ListView, который отображает элементы пользователя, выбирая их, а затем нажмите кнопку, чтобы удалить выбранные; в этом случае:удаление элементов из ArrayList
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);
}
Вполне возможно, что я «перерыв» ссылка на пользователя ArrayList?
Посмотрите на методы «Удалить» и «Удалить» – geekonedge