#java #android #arrays #android-alertdialog
#java #Android #массивы #android-alertdialog
Вопрос:
В моем коде я могу выбирать элементы флажков и устанавливать их в своем массиве:
protected ArrayList<Integer> selectedStatusId = new ArrayList<>();
Но когда я выбираю тот же элемент флажка, нужно удалить его из моего массива и… Я не могу этого сделать, потому что идентификатор в моем массиве отличается от моего mStatuses
. Как я могу удалить нужный мне элемент?
Может быть, я могу получить все выбранные элементы после нажатия положительной кнопки?
final ArrayList<String> statusesTitles = new ArrayList<>();
for (int i = 0; i < mStatuses.size(); i ) {
statusesTitles.add(mStatuses.get(i).StatusTitle);
}
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.order_dialog_status_title)
.setMultiChoiceItems(statusesTitles.toArray(new String[statusesTitles.size()]), null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean b) {
if (b){
selectedStatusId.add(mStatuses.get(i).StatusId);
} else {
// TODO How I can delete my position from array?
}
}
})
.setPositiveButton(R.string.order_dialog_status_positive_button, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
refreshContent();
}
})
.setNegativeButton(R.string.order_dialog_status_negative_button, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
builder.show();
Ответ №1:
Вы можете удалить элемент следующим способом.
ArrayList<Integer> selectedStatusId = new ArrayList<>();
if (true){
selectedStatusId.add(mStatuses.get(i).StatusId);
} else {
// delete the first occurrence of the specified element from array
selectedStatusId.remove(new Integer(mStatuses.get(i).StatusId));
}
Ответ №2:
final ArrayList<String> selectedStatusId = new ArrayList<>();
//MAKE IT STRING TYPE
final ArrayList<String> statusesTitles = new ArrayList<>();
for (int i = 0; i < mStatuses.size(); i ) {
statusesTitles.add(mStatuses.get(i).StatusTitle);
}
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.order_dialog_status_title)
.setMultiChoiceItems(statusesTitles.toArray(new String[statusesTitles.size()]), null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean b) {
if (b) {
selectedStatusId.add(String.valueOf(mStatuses.get(i).StatusId));
} else {
// TODO How I can delete my position from array?
selectedStatusId.remove(String.valueOf(mStatuses.get(i).StatusId));
}
//OR_______________________YOU CAN USE THIS ALSO
// if (selectedStatusId.contains(String.valueOf(mStatuses.get(i).StatusId))) {
// selectedStatusId.remove(String.valueOf(mStatuses.get(i).StatusId));
// } else {
// selectedStatusId.add(String.valueOf(mStatuses.get(i).StatusId));
// }
}
})
.setPositiveButton(R.string.order_dialog_status_positive_button, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
refreshContent();
}
})
.setNegativeButton(R.string.order_dialog_status_negative_button, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
builder.show();
Надеюсь, это поможет..