[ gojic @ 02.01.2017. 14:25 ] @
Pozdrav svima, pokusavam da napravim svoju android aplikaciju.Malu android aplikaciju.
O cemu se radi...dakle aplikacija oponasa meni iz restorana, kad korisnik cekira dorucak, nprm slanina i jaja, unese svoje ime aplikacija ponovi na ekranu te informacije. Ukoliko on zeli da uzme dva razlicita dorucka, aplikacija,naravno,sabere cene i ispise na ekranu.

Code:
 private int calculatePrice(boolean firstBreakfest, boolean secondBreakfest, boolean thirdBreakfest) {
        int price = 0;
       if (firstBreakfest && secondBreakfest){
           price = priceDish1 + priceDish2;
        }
       else if(firstBreakfest){
           price = priceDish1;
       }
       else if(secondBreakfest){
           price = priceDish2;
        }
       else if (thirdBreakfest){
           price = priceDish3;
       }

        return price;
    }

Ali sta ako korisnik hoce da izabere vise razlicitih jela, ne mogu u nedogled da dodajem ifpetlju.Ili,ipak,mogu?
Sve u svemu kod mi izgleda odvratno ovako sa brdo ifpetlji.

Koristim boolean, kada je zeljeni dorucak cekiran on prikazuje cenu i pratecu poruku.

e sad gde sam zapeo...u principu nisam ni zapeo,nego me zanima da li postoji laksi i, na oko lepsi, nacin da izracunam vise varijabli? Moj kod radi sasvim ok ali mi jako ruzno izgleda da imam na desetine if petlja. Probao sam da koristim switch/case ali ne moze sa boolean.E sad ne znam da li moze sa listama nesto da se uradi?

Ovako mi za sada aplikacija izgleda
http://i.imgur.com/6ukHSOQ.png[att_img]

Kod aplikacije:
JAVA

Code:
public class MainActivity extends AppCompatActivity {
    int quantity = 1;
    public int priceDish1 = 320; //egs and bacon
    public int priceDish2 = 125; //omelet
    public int priceDish3 = 200; //pancakes

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


    public void submitOrder(View view) {
        CheckBox checkedBox = (CheckBox) findViewById(R.id.dish1);
        boolean firstBreakfest = checkedBox.isChecked();
        CheckBox checkedBox2 = (CheckBox) findViewById(R.id.dish2);
        boolean secondBreakfest = checkedBox2.isChecked();
        CheckBox checkBox3 = (CheckBox) findViewById(R.id.dish3);
        boolean thirdBreakfest = checkBox3.isChecked();
        EditText editText = (EditText) findViewById(R.id.name_of_user);
        String nameOfUser = editText.getText().toString();
        int price = calculatePrice(firstBreakfest, secondBreakfest,thirdBreakfest);
        String message = orderSummary(price, firstBreakfest, nameOfUser, secondBreakfest);
        displayMessage(message);
    }

    private int calculatePrice(boolean firstBreakfest, boolean secondBreakfest, boolean thirdBreakfest) {
        int price = 0;
       if (firstBreakfest && secondBreakfest){
           price = priceDish1 + priceDish2;
        }
       else if(firstBreakfest){
           price = priceDish1;
       }
       else if(secondBreakfest){
           price = priceDish2;
        }
       else if (thirdBreakfest){
           price = priceDish3;
       }

        return price;
    }

    private String orderSummary(int price, boolean firstBreakfest, String nameOfUser, boolean secondBreakfest) {
        String dish1 = "Beacon and eggs";
        String dish2 = "Omelet";
        String message ="Your name: " + nameOfUser;
        message = message + "\nPrice: " + price + " rsd";
        if(firstBreakfest && secondBreakfest){
            message = message + "\nYour ordered " + dish1 + " and " + dish2;
        }
        else if (firstBreakfest) {
            message = message +  "\nYou ordered " + dish1;
        }
        else if (secondBreakfest) {
            message = message + "\nYou ordered " + dish2;
        }
        return message;
    }


    private void displayMessage(String message) {
        TextView priceTextView = (TextView) findViewById(R.id.order_summary);
        priceTextView.setText(message);
    }

}


Planiram da dodam jos jela, pa mi zato ovo pravi problem.

XML nisam stavio kontam da je nepotreban,ali ako pomaze stavicu kasnije.

Hvala svima.


[Ovu poruku je menjao gojic dana 02.01.2017. u 18:15 GMT+1]
[ @ 02.01.2017. 19:38 ] @
A da umesto check boxa stavis spin i korisnik napuca koliko cega zeli?
[ ravni @ 04.01.2017. 09:44 ] @
nastavi sa cekboxovima - u nekom momentu kada budes smisljao kako ces da omogucis da se jela lako dodaju i da im se menja cena, onda ce ti se ovo samo resiti
[ plague @ 05.01.2017. 06:44 ] @
Naravno da postoji bolji nacin.

Sa trenutnom postavkom trebalo bi napraviti bar tri klase ItemType, Item i Order.

Code (java):

public class ItemType {
    private String name;

    // constructor
    // get/set for properties
    // override equals and hashCode - Mandatory!  
}

public class Item {
    private String name;
    private ItemType type;
    private double price;
 
    // constructor
    // get/set for properties
    // override equals and hashCode - Mandatory!
}

public class Order {
    private Set<Item> items = new HashSet<>();
   
    public void addItem(Item item) {
        items.add(item);
    }

    public void removeItem(Item item) {
        items.remove(item);
    }

    public double calculateOrderCost() {
        double totalCost = 0;
        for (Item i : items) {
            totalCost += i.getPrice();
        }

        return totalCost;
    }
}
 

Trebalo bi napraviti i neki Servis koji ce ti vratiti dostupne Item-e bilo iz fajla ili konfiguracije.
Ako hoces da izbegnes ponovo kompajliranje/pakovanje aplikacije onda treba napraviti Web Service...
ItemType moze biti enum ako ces raditi iz fajla/konfiguracije.

[Ovu poruku je menjao plague dana 05.01.2017. u 08:00 GMT+1]