Я создаю приложение. В котором я спрашиваю пользователя о его группе крови через счетчик, и когда пользователь выбирает группу крови, я добавляю группы крови в массив Списка, которому он может сдавать кровь. Как если он выберет группу крови O-, я добавлю всю кровь группы для массива как O- могут сдавать кровь всем. До этого все работало нормально, когда пользователь ошибочно выбирает O-, а затем выбирает A-, так что теперь, как мне удалить предыдущие группы из arrayList и добавить группы, в которые A - могу сдать кровь прямо сейчас я занимаюсь этим:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
matchedGrpToDonate = spinner.getSelectedItem().toString();
matchedBloodGroups();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
private void matchedBloodGroups() {
if (matchedGrpToDonate.equals("A+")) {
bloodBankCanDonate.add("AB+");
bloodBankCanDonate.add("A+");
System.out.println("hash" + bloodBankCanDonate);
} else if (matchedGrpToDonate.equals("A+")) {
bloodBankCanDonate.remove("AB+");
bloodBankCanDonate.remove("A+");
System.out.println("hash" + bloodBankCanDonate);
}
if (matchedGrpToDonate.equals("A-")) {
bloodBankCanDonate.add("AB+");
bloodBankCanDonate.add("A+");
bloodBankCanDonate.add("AB-");
bloodBankCanDonate.add("A-");
System.out.println("hash" + bloodBankCanDonate);
} else if (matchedGrpToDonate.equals("A-")) {
bloodBankCanDonate.remove("AB+");
bloodBankCanDonate.remove("A+");
bloodBankCanDonate.remove("AB-");
bloodBankCanDonate.remove("A-");
System.out.println("hash" + bloodBankCanDonate);
}
if (matchedGrpToDonate.equals("B+")) {
bloodBankCanDonate.add("AB+");
bloodBankCanDonate.add("B+");
System.out.println("hash" + bloodBankCanDonate);
} else if (matchedGrpToDonate.equals("B+")) {
bloodBankCanDonate.remove("AB+");
bloodBankCanDonate.remove("B+");
System.out.println("hash" + bloodBankCanDonate);
}
if (matchedGrpToDonate.equals("B-")) {
bloodBankCanDonate.add("AB+");
bloodBankCanDonate.add("B+");
bloodBankCanDonate.add("AB-");
bloodBankCanDonate.add("B-");
System.out.println("hash" + bloodBankCanDonate);
} else if (matchedGrpToDonate.equals("B-")) {
bloodBankCanDonate.remove("AB+");
bloodBankCanDonate.remove("B+");
bloodBankCanDonate.remove("AB-");
bloodBankCanDonate.remove("B-");
System.out.println("hash" + bloodBankCanDonate);
}
if (matchedGrpToDonate.equals("O+")) {
bloodBankCanDonate.add("AB+");
bloodBankCanDonate.add("A+");
bloodBankCanDonate.add("B+");
bloodBankCanDonate.add("O+");
System.out.println("hash" + bloodBankCanDonate);
} else if (matchedGrpToDonate.equals("O+")) {
bloodBankCanDonate.remove("AB+");
bloodBankCanDonate.remove("A+");
bloodBankCanDonate.remove("B+");
bloodBankCanDonate.remove("O+");
System.out.println("hash" + bloodBankCanDonate);
}
if (matchedGrpToDonate.equals("O-")) {
bloodBankCanDonate.add("AB+");
bloodBankCanDonate.add("A+");
bloodBankCanDonate.add("B+");
bloodBankCanDonate.add("O+");
bloodBankCanDonate.add("AB-");
bloodBankCanDonate.add("A-");
bloodBankCanDonate.add("B-");
bloodBankCanDonate.add("O-");
System.out.println("hash" + bloodBankCanDonate);
} else if (matchedGrpToDonate.equals("O-")) {
bloodBankCanDonate.remove("AB+");
bloodBankCanDonate.remove("A+");
bloodBankCanDonate.remove("B+");
bloodBankCanDonate.remove("O+");
bloodBankCanDonate.remove("AB-");
bloodBankCanDonate.remove("A-");
bloodBankCanDonate.remove("B-");
bloodBankCanDonate.remove("O-");
System.out.println("hash" + bloodBankCanDonate);
}
}
2 ответа
Попробуйте, я попытался упростить ваш код, поэтому сначала я создал группы:
enum BloodType {
A_PLUS,
A_MINUS,
AB_PLUS,
AB_MINUS,
B_PLUS,
B_MINUS,
O_PLUS,
O_MINUS
}
private static final ArrayList<BloodType> APlusCanDonate = new ArrayList<BloodType>() {
{
add(BloodType.AB_PLUS);
add(BloodType.A_PLUS);
}
};
private static final ArrayList<BloodType> AMinusCanDonate = new ArrayList<BloodType>() {
{
add(BloodType.AB_PLUS);
add(BloodType.A_PLUS);
add(BloodType.AB_MINUS);
add(BloodType.A_MINUS);
}
};
private static final ArrayList<BloodType> BPlusCanDonate = new ArrayList<BloodType>() {
{
add(BloodType.AB_PLUS);
add(BloodType.B_PLUS);
}
};
private static final ArrayList<BloodType> BMinusCanDonate = new ArrayList<BloodType>() {
{
add(BloodType.AB_PLUS);
add(BloodType.B_PLUS);
add(BloodType.AB_MINUS);
add(BloodType.B_MINUS);
}
};
private static final ArrayList<BloodType> OPlusCanDonate = new ArrayList<BloodType>() {
{
add(BloodType.AB_PLUS);
add(BloodType.A_PLUS);
add(BloodType.B_PLUS);
add(BloodType.O_PLUS);
}
};
private static final ArrayList<BloodType> OMinusCanDonate = new ArrayList<BloodType>() {
{
add(BloodType.AB_PLUS);
add(BloodType.A_PLUS);
add(BloodType.B_PLUS);
add(BloodType.O_PLUS);
add(BloodType.AB_MINUS);
add(BloodType.A_MINUS);
add(BloodType.B_MINUS);
add(BloodType.O_MINUS);
}
};
Затем я проверяю входящую группу крови:
private void matchedBloodGroups(BloodType type) {
switch (type) {
case AB_PLUS:
case AB_MINUS:
return;
case A_PLUS:
udpateSpinnerForGroup(APlusCanDonate);
break;
case B_PLUS:
udpateSpinnerForGroup(BPlusCanDonate);
break;
case O_PLUS:
udpateSpinnerForGroup(OPlusCanDonate);
break;
case A_MINUS:
udpateSpinnerForGroup(AMinusCanDonate);
break;
case B_MINUS:
udpateSpinnerForGroup(BMinusCanDonate);
break;
case O_MINUS:
udpateSpinnerForGroup(OMinusCanDonate);
break;
}
}
И теперь вы можете создать метод, в котором вы устанавливаете новые данные для вашего адаптера счетчика:
public void udpateSpinnerForGroup(ArrayList<BloodType> canDonate) {
// Update your spinner adapter with new Arraylist
}
Надеюсь это поможет.
Вы можете просто добавить проверку в утверждении if, что если список массивов не пустой, очистите его и добавьте значение групп крови следующим образом:
private void matchedBloodGroups() {
if (matchedGrpToDonate.equals("A+")) {
if (!bloodBankCanDonate.isEmpty())
bloodBankCanDonate.clear();
bloodBankCanDonate.add("AB+");
bloodBankCanDonate.add("A+");
System.out.println("hash" + bloodBankCanDonate);
}
if (matchedGrpToDonate.equals("A-")) {
if (!bloodBankCanDonate.isEmpty())
bloodBankCanDonate.clear();
bloodBankCanDonate.add("AB+");
bloodBankCanDonate.add("A+");
bloodBankCanDonate.add("AB-");
bloodBankCanDonate.add("A-");
System.out.println("hash" + bloodBankCanDonate);
}
Вы можете сделать то же самое для других групп крови, но помните, что это условие только в том случае, если вы выбираете одну группу крови, которая может сдавать кровь.
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .