簡體   English   中英

如何從復選框中獲取多個選中的值並阻止輸出顯示兩次

[英]How to get multiple checked value from checkbox and prevent the output show twice

實際上我正在嘗試創建一個復選框,根據多個選定的成分顯示匹配配方。 (某些食譜可能含有相同的成分)但我不知道如何制作if else陳述。 到目前為止,這是顯示所選成分的代碼,但它並不完整。 有人幫我解決if else聲明。 謝謝。 (我正在使用android studio)

  public class DessertIngAvail extends Dessert {

ArrayList<String> selection = new ArrayList<String>();
TextView final_text;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dessert_ing_avail);

    final_text = (TextView)findViewById(R.id.final_result);
    final_text.setEnabled(false);
}

public void selectItem(View view){
    boolean checked = ((CheckBox) view).isChecked();
    switch (view.getId())
    {
        case R.id.checkBox153:
            if(checked)
            {if(!selection.contains("Bingka Cheese"))
                selection.add("Bingka Cheese");
            }



            break;

        case R.id.checkBox154:
            if(checked)
            {if(!selection.contains("Bingka Cheese"))
                selection.add("Bingka Cheese");

                if(!selection.contains("Steam Shrimp Paste Cake"))
                    selection.add("Steam Shrimp Paste Cake");

                if(!selection.contains("Banana Heart Cake"))
                    selection.add(" Banana Heart Cake");

                if(!selection.contains("Honey Frankincense Cake"))
                    selection.add(" Honey Frankincense Cake");

                if(!selection.contains("Ray Heart Cake"))
                    selection.add("Ray Heart Cake");
            }

            break;

        case R.id.checkBox155:

            if(checked)

            {if(!selection.contains("Bingka Cheese"))
                selection.add("Bingka Cheese");

                if(!selection.contains("Steam Shrimp Paste Cake"))
                    selection.add("Steam Shrimp Paste Cake");

                if(!selection.contains("Banana Heart Cake"))
                    selection.add("Banana Heart Cake");

                if(!selection.contains("Evergreen Cake"))
                    selection.add("Evergreen Cake");

                if(!selection.contains("Moss Cake"))
                    selection.add("Moss Cake");

                if(!selection.contains("Honey Frankincense Cake"))
                    selection.add("Honey Frankincense Cake");

                if(!selection.contains("Ray Heart Cake"))
                    selection.add("Ray Heart Cake");
            }

            break;

        case R.id.checkBox156:
            if(checked)

            {if(!selection.contains("Bingka Cheese"))
                selection.add("Bingka Cheese");}

            break;

        case R.id.checkBox157:

            if(checked)
            {if(!selection.contains("Bingka Cheese"))
                selection.add("Bingka Cheese");
                if(!selection.contains("Steam Shrimp Paste Cake"))
                    selection.add("Steam Shrimp Paste Cake");
                if(!selection.contains("Evergreen Cake"))
                    selection.add("Evergreen Cake");
                if(!selection.contains("Moss Cake"))
                    selection.add("Moss Cake");

            }

            break;



    }
}

public void finalSelection(View view){

    String final_fruit_selection = "";

    for(String Selection : selection)
    {
        final_fruit_selection = final_fruit_selection + Selection + "\n";

    }
    final_text.setText(final_fruit_selection);
    final_text.setEnabled(true);

}

}

代碼的問題是,我無法刪除已檢查成分的第一個輸出。 因此,當我第二次輸入檢查成分時,檢查成分的值只是保持添加而不刪除先前的結果。

首先使用Set (HashSet)來避免

if(!selection.contains("Ray Heart Cake")){
    selection.add("Ray Heart Cake");
}

其次我會做這樣的事情。 將成分名稱設置為View#setTag()Map<Integer, String> ,其中Integer是視圖ID:

public void selectItem(View view){
    Set<String> output = new HashSet(); // here could be ArrayList also OK
    for(CheckBox ch : allMyCheckBoxes){
        if(ch.isChecked()){
            output.add(ch.getTag());
        }
    }
    showOutPut(output);
}

這將使您的代碼更易讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM