스피너 값전달 질문입니다.

조회수 930회

고양이 사료량 계산하는 어플만들고있는데

스피너로 애좀 먹고 있습니다.

빌드하여 에뮬레이터 돌리면 그냥 스피너에 첫번째 배열의 값으로만 저장되고 이후에 다른 배열을 선택하고 버튼을 눌러도 첫번째 배열값으로만 결과가 나옵니다. if (button != null) 로해보고 해봤는데도 그냥 에뮬레이터 실행하자마자 스피너에 첫번째배열로만 값이 저장되고 이후에 바꿔도 바꿔지지를 않네요 이를 어쩌면 좋죠??

public class MainActivity extends AppCompatActivity {
    double gaJung;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.button);


        String[] items = new String[8];
        items[0] = "4개월 미만";
        items[1] = "4~6개월";
        items[2] = "7~12개월";
        items[3] = "중성화한 성묘";
        items[4] = "일반 성묘";
        items[5] = "운동량이 많은 성묘";
        items[6] = "노묘";
        items[7] = "비만묘";


        // (밑에부터) 스피너 쓰기위해 쓰는 코드 //
        final Spinner spinner = findViewById(R.id.spinner); // 스피너 초기화
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(  // 배열을 스트링타입으로 쓰겠다.
                this, android.R.layout.simple_spinner_item, items);
        adapter.setDropDownViewResource(
                android.R.layout.simple_spinner_dropdown_item);



        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });  // 스피너 쓰기위한 어뎁터 메소드 선언부


            String selectedItemName = spinner.getSelectedItem().toString();
            if (selectedItemName.equals("노묘")) {
                gaJung = 0.7;
            } else if (selectedItemName.equals("비만묘")) {
                gaJung = 0.8;
            } else if (selectedItemName.equals("4개월 미만")) {
                gaJung = 3.0;
            } else if (selectedItemName.equals("4~6개월")) {
                gaJung = 2.5;
            } else if (selectedItemName.equals("7~12개월")) {
                gaJung = 2.0;
            } else if (selectedItemName.equals("중성화한 성묘")) {
                gaJung = 1.2;
            } else if (selectedItemName.equals("일반 성묘")) {
                gaJung = 1.4;
            } else if (selectedItemName.equals("운동량이 많은 성묘")) {
                gaJung = 1.6;
            }



        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                double Der = 10 * gaJung;
                String str = String.valueOf(Der);
                showToast(str);
            }
        });

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)