마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

spinner 선택시,

0 추천
package com.example.sunhayoung.winintec1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class w1 extends AppCompatActivity {

    EditText editText4;
    EditText editText5;
    EditText editText6;

    TextView textView8;


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


        editText4 = (EditText) findViewById(R.id.editText4);
        editText5 = (EditText) findViewById(R.id.editText5);
        editText6 = (EditText) findViewById(R.id.editText6);

        textView8 = (TextView)findViewById(R.id.textView8);

        Spinner xcSpinner = (Spinner) findViewById(R.id.xc);
        ArrayAdapter xcAdapter = ArrayAdapter.createFromResource(this, R.array.xc,android.R.layout.simple_spinner_item);
        xcAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        xcSpinner.setAdapter(xcAdapter);

        Spinner fSpinner = (Spinner) findViewById(R.id.f);
        ArrayAdapter fAdapter = ArrayAdapter.createFromResource(this, R.array.f,android.R.layout.simple_spinner_item);
        fAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        fSpinner.setAdapter(fAdapter);

        Spinner cSpinner = (Spinner) findViewById(R.id.c);
        ArrayAdapter cAdapter = ArrayAdapter.createFromResource(this, R.array.c,android.R.layout.simple_spinner_item);
        cAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        cSpinner.setAdapter(cAdapter);
    }

    public void onButton4Clicked(View v) {
        float num1 = Float.parseFloat(editText5.getText().toString());
        float num2 = Float.parseFloat(editText6.getText().toString());
        float num3 = 2;
        float pi = (float) 3.14159;
        float num4 = 1;


        float result = num3 * pi * num1 * num2 / num4;
        textView8.setText("Xc = " +result);
    }

    public void onButton5Clicked(View v) {
        float num1 = Float.parseFloat(editText4.getText().toString());
        float num2 = Float.parseFloat(editText6.getText().toString());
        float num3 = 2;
        float pi = (float) 3.14159;
        float num4 = 1;


        float result = num3 * pi * num1 * num2 / num4;
        textView8.setText("f = " +result);
    }

    public void onButton6Clicked(View v) {
        float num1 = Float.parseFloat(editText5.getText().toString());
        float num2 = Float.parseFloat(editText4.getText().toString());
        float num3 = 2;
        float pi = (float) 3.14159;
        float num4 = 1;


        float result = num3 * pi * num1 * num2 / num4;
        textView8.setText("c = " + result);

    }


}

​spinner 값에는 단위 값들이 들어있구요.

spinner에서 아이템 선택 하고 버튼을 눌렀을때 단위에 맞는 계산식이 나오도록 구현하고 싶습니다.

구글링을 많이 해봤는데 리스너를 사용하라는 것을 많이 봤는데, 버튼에서 어떻게 받아야 하는지도 모르겠고..

도와주시겠어요ㅠㅠ?

후니02 (820 포인트) 님이 2015년 10월 20일 질문

2개의 답변

0 추천
xc스피너,f스피너,c스피너..이렇게 있는건가여

말씀하신대로 단위값 때문에 세개로 만드신거같은데, 하나의 스피너에

통합해서 넣으셔도 될거같은데요..

굳이 스피너 세개로 따로 하셔도 상관은 없고요.

버튼클릭 이벤트가 아니라 스피너자체의 아이템 셀렉트인가 그걸로 처리했어요.

http://kd3302.tistory.com/67
망고사탕 (5,000 포인트) 님이 2015년 10월 20일 답변
단위값이 다 달라서요..
단위값이 다르면 3개 모두 각각 클릭이벤트 내에서 분기점을 만들어 처리해주시면 될거같아요. 저도 스피너 하나 만들고 안에 5개의 선택문을 만들어서 다섯개 모두 다르게 처리했거든요. 스피너안에 들어갈 3개의 항목을 텍스트로 xc/f/c이런식으로 넣고, 0번 스피너[xc]~2번스피너[c]를 눌렀을 때의 처리를 따로 해주면 되지 않을까 싶어요. 어차피 3개의 editText안에 들어가는 숫자값을 갖고와서 처리하는거니까요.
스피너 1개나 3개나 글쓴님이 편하신대로 만들고..스피너 안에 포함된 항목을 눌럿을 때 셀렉트가 되도록 확인해보세요
감사합니당.. 혹시 예를들어 조금만 설명해 주실 수 있으세요?
제가 조금 알듯말듯해서요ㅠ.ㅠ!
각 계산법을 구분만 할 수있으면 굳이 스피너 3개를 만들 필요 없이 하나의 스피너에 배열로 값을 3개 넣어서 구분할 수 있어요. ui를 달리 하고싶으시면 3개의 스피너를 만드시면 될거구..그럴 경우엔 밑에 분의 방법으로 하시면 될거같구요. 1개의 스피너에 할 경우 제가 했던 방법으로 하자면
String[] cal = {"xc계산","f계산","c계산"}; 이렇게 배열에 값을 넣고,
spinner = (Spinner)findViewById(R.id.spinner );
ArrayAdapter<String> adpater = new ArrayAdapter<String>(
                this, android.R.layout.simple_spinner_item, cal);
        adpater.setDropDownViewResource
        (android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adpater);
이렇게 어댑터를 사용했습니다.
해당 스피너에 setOnItemSelectedListener 아이템셀렉트 리스너를 사용해서
position으로 if문등의 분기를 사용해서 각 계산 법을 적용하면 되지 않을까요.
0 추천
xcSpinner.setOnItemSelectedListener(this)
fSpinner.setOnItemSelectedListener(this)
cSpinner.setOnItemSelectedListener(this)

implements 에 리스너 붙이시고

onItemSelected 을 override 하시면 됩니다.

구분은

switch(parent.getId()){
   case  R.id.xc :
                ...
   break;

  case  R.id.f :
      .
      .
      .
}

데이터를 가져오실땐 position 값으로 어댑터에서 땡겨오시면 되요

홍월령 (4,240 포인트) 님이 2015년 10월 20일 답변
...