选择新的微调项时从数组中删除值
Delete Value from array when a new spinner item is selected
我正在创建 app.In 我正在通过微调器询问用户它的血型,当用户 select 一个血型时,我将血型添加到 arrayList 中,他可以向其捐赠 blood.Like 如果他 select 血型 O-,我会将所有血型添加到数组中,因为 O- 可以向 all.Till 献血,当用户错误地 select O- 然后他 selects 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);
}
}
您可以在 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);
}
您可以对其他血型进行同样的操作,但请记住,此条件仅适用于您选择可以献血的血型。
试试这个,我试图简化你的代码,所以首先我创建了组:
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
}
希望,这对您有所帮助。
我正在创建 app.In 我正在通过微调器询问用户它的血型,当用户 select 一个血型时,我将血型添加到 arrayList 中,他可以向其捐赠 blood.Like 如果他 select 血型 O-,我会将所有血型添加到数组中,因为 O- 可以向 all.Till 献血,当用户错误地 select O- 然后他 selects 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);
}
}
您可以在 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);
}
您可以对其他血型进行同样的操作,但请记住,此条件仅适用于您选择可以献血的血型。
试试这个,我试图简化你的代码,所以首先我创建了组:
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
}
希望,这对您有所帮助。