2015-02-07 74 views
0

我已經創建了兩個微調器,用戶可以選擇一個膳食類型,然後選擇一個食物(例如'早餐'和'粥')。然後我需要通過用戶在編輯文本中輸入的重量來計算食物卡路里,但我不確定我是如何做到這一點的。從微調創建一個計算器

如何將我的微調器選項與數字相關聯?

public class MainActivity3 extends ActionBarActivity { 

    EditText num1; 
    EditText num2; 
    EditText num3; 
    EditText num4; 
    EditText num5; 
    Button btnSave; 
    EditText calorieResult; 


    public Spinner catspinner, planspinner3, planspinner1, planspinner2; 

    protected void onCreate(Bundle mbfSplash) { 
     super.onCreate(mbfSplash); 
     setContentView(R.layout.addmeal); 

     chooseCategory(); 
     chooseBreakfast(); 
     chooseLunch(); 
     chooseDinner(); 
     chooseSnack(); 
    } 

    public void chooseCategory() { 

     catspinner = (Spinner) findViewById(R.id.catspinner); 
     ArrayAdapter<CharSequence> catAdapter = ArrayAdapter.createFromResource(this, R.array.ducategory, android.R.layout.simple_spinner_item); 
     catAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     catspinner.setAdapter(catAdapter); 
     catspinner.setOnItemSelectedListener(new planOnClickListener()); 
    } 

    private void chooseBreakfast() { 
     planspinner1 = (Spinner) findViewById(R.id.planspinner); 
     List<String> planlist = new ArrayList<String>(); 
     planlist.add("Porridge-40g/140cal"); 
     planlist.add("Coffee-10g/10cal"); 
     planlist.add("Toast-30g/87cal"); 
     ArrayAdapter<String> planAdapter1 = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, planlist); 
     planAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     planspinner1.setAdapter(planAdapter1); 
    } 

    private void chooseLunch() { 

     planspinner2 = (Spinner) findViewById(R.id.planspinner); 
     List<String> planlist1 = new ArrayList<String>(); 
     planlist1.add("Salad-50g/40cal"); 
     planlist1.add("Sandwich-50g/200cal"); 
     ArrayAdapter<String> planAdapter2 = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, planlist1); 
     planAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     planspinner2.setAdapter(planAdapter2); 
    } 

    private void chooseDinner() { 

     planspinner2 = (Spinner) findViewById(R.id.planspinner); 
     List<String> planlist2 = new ArrayList<String>(); 
     planlist2.add("Curry-100g/400cal"); 
     planlist2.add("Pasta-40g/160cal"); 
     planlist2.add("Pizza100g/220cal"); 
     ArrayAdapter<String> planAdapter3 = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, planlist2); 
     planAdapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     planspinner2.setAdapter(planAdapter3); 
    } 

    private void chooseSnack() { 
     planspinner1 = (Spinner) findViewById(R.id.planspinner); 
     List<String> planlist = new ArrayList<String>(); 
     planlist.add("Crisps-30g/70cal"); 
     planlist.add("Chocolate-100g/210cal"); 
     ArrayAdapter<String> planAdapter1 = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, planlist); 
     planAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     planspinner1.setAdapter(planAdapter1); 
    } 

    public class planOnClickListener implements OnItemSelectedListener { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View v, int pos, 
            long id) { 

      parent.getItemAtPosition(pos); 

      if (pos == 0) { 
       chooseBreakfast(); 
      } else if (pos == 1) { 
       chooseLunch(); 
      } else if (pos == 2) { 
       chooseDinner(); 
      } else if (pos == 3) { 
       chooseSnack(); 
      } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 
     } 
    } 


} 
+1

閱讀面向對象編程 – 2015-02-07 15:11:05

+0

讓我正確地理解這一點。有兩個'Spinner's。一個顯示早餐類型,另一個顯示食物。然後有一個用戶輸入體重的「EditText」。你必須乘以體重與食物相關的卡路里。它是否正確? – EdmDroid 2015-02-07 15:14:56

+0

是的,這是正確的。 – NicolaBA 2015-02-07 15:30:24

回答

0

我這樣做沒有代碼編輯器,所以赦免語法錯誤,但一般來說你應該使用一個對象來存儲所關聯的數據。爲您的紡紗器使用自定義適配器。這是一些讓你開始的代碼。

您應該創建一個名爲Food的對象。

public class Food { 
int mCalories; 
String mName; 

public Food(String name, int calories) { 
    mName= name; 
    mCalories = calories; 
    } 
} 

現在您可以爲您的微調器使用自定義數組適配器。

public class FoodArrayAdapter extends ArrayAdapter<Food> { 

private List<Food> mItems; 
private Context mContext; 
private int mResource; 

public FoodArrayAdapter(Context ctx, int resource, List<Food> items) { 
    super(activity, resource); 
    mItems = items; 
    mContext = ctx; 
    mResource = resource; 
} 

@Override 
public View getDropDownView(int position, View convertView, ViewGroup parent) { 
    //You could use a view holder pattern here, won't really matter for a simple text spinner. 
    Food item = mItems.get(position); 
    LayoutInflater inflater = (LayoutInflater) mContext 
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View v = inflater.inflate(mResource, parent); 
    TextView textView = (TextView) v.findViewById(android.R.id.text1); 

    if (item != null) { 
     textView.setText(food.getName()); 
    } 

    return v; 
} 

@Override 
public Food getItem(int position) { 
    return items.get(position); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    return getDropDownView(int position, View convertView, ViewGroup parent); 
    //or make another view for when the spinner is expanded 
} 

@Override 
public int getCount() { 
    return mItems.getSize(); 
} 
} 

現在只需在自己的主要活動中將您的自定義適配器與您的紡紗器相關聯。

Spinner spinner = (Spinner) layout.findViewById(R.id.myspinner1); 
spinner.setAdapter(new FoodAdapter(this, android.R.layout.simple_spinner_item, list); 
spinner.setOnItemSelectedListener(new OnItemSelectedListener(){ 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){ 
     Food food = (Food) parent.getItemAtPosition(pos); 
     //Do whatever you need to do with selected value. You have reference to both the food and the calories. 
    } 
    public void onNothingSelected( AdapterView<?> parent){ 

    } 
    } 

);

+0

你給了我一個很好的開始。謝謝! :) – NicolaBA 2015-02-07 20:58:52