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

동적 스피너 구현 질문 수정합니다.

0 추천

안녕하세요. 동적 스피너에 대해서 잠시 질문을 드리고자 합니다.

우선 앱을 실행시켰을때 wave15스피너가 뜬 후에, 버튼을 클릭하면 스피너의 값들이 wave10으로 변경하고 싶습니다..

스피너 1개로 이게 구현이 가능한지부터가 궁금하구요.

 

우선 글로 설명을 드리자면.

앱 실행시 첫번째 스피너인 wave15가 정상적으로 뜹니다.

버튼 클릭시 wave10값들의 스피너가 아닌 다음과 같이 화면이 뜹니다.

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<resources> 
<string-array name="wave15">       
        <item>1270nm</item>
        <item>1290nm</item>
        <item>1310nm</item>
        <item>1330nm</item>
        <item>1350nm</item>
        <item>1410nm</item>
        <item>1430nm</item>
        <item>1470nm</item>
        <item>1490nm</item>
        <item>1510nm</item>
        <item>1530nm</item>
        <item>1550nm</item>
        <item>1570nm</item>
        <item>1590nm</item>
        <item>1610nm</item>       
    </string-array>   
 
  <string-array name="wave10">       
        <item>1nm</item>
        <item>2nm</item>
        <item>3nm</item>
        <item>4nm</item>
        <item>5nm</item>
        <item>6nm</item>
        <item>7nm</item>
        <item>8nm</item>
        <item>9nm</item>
        <item>10nm</item>      
    </string-array> 
</resources>

 

 

 

package com.example.spinnerex;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class MainActivity extends Activity implements OnClickListener {
 
 ArrayAdapter<CharSequence> adspin;
 Spinner spin;
 TextView wave;

@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  ((Button) findViewById(R.id.button1)).setOnClickListener(this);
  
  wave = (TextView)findViewById(R.id.wave);
  spin = (Spinner)findViewById(R.id.wavees);
  spin.setPrompt("Select a wavelength!!");  
  adspin = ArrayAdapter.createFromResource(this, R.array.wave15, android.R.layout.simple_spinner_item); 
  
  adspin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(adspin);    
       
        spin.setOnItemSelectedListener(new OnItemSelectedListener() {
   @Override
   public void onItemSelected(AdapterView<?> arg0, View arg1,
     int position, long id) {
    // TODO Auto-generated method stub
    Toast.makeText(MainActivity.this, adspin.getItem(position) + " Wavelength Choice", 1).show();
    TextView tv = (TextView)arg1;
    wave.setText(tv.getText());
   } 

@Override
   public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub    
   }
        });  
 }
 
 public void onClick(View v){
  
  switch(v.getId()) {  
  case R.id.button1 :
   spin = (Spinner)findViewById(R.id.wavees);
   ArrayAdapter<CharSequence> adspin =  new ArrayAdapter<CharSequence>(this, R.array.wave10, android.R.layout.simple_spinner_item);   
   adspin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         spin.setAdapter(adspin);
         adspin.notifyDataSetChanged();  
  }  
 }
}

 

앤드류이드 (6,190 포인트) 님이 2013년 6월 25일 질문
앤드류이드님이 2013년 6월 25일 수정

1개의 답변

0 추천
 
채택된 답변

안녕하세요! 스피너 동적 구현을 말씀하시는것같네요!

간단히 코드에서 ArrayList를 구현하겠습니다.

arrayList = new ArrayList();
arrayList.add("1");
arrayList.add("2");
arrayList.add("3");

arrayList1 = new ArrayList();
arrayList1.add("4");
arrayList1.add("5");
arrayList1.add("6");

final Spinner spinner = (Spinner) findViewById(R.id.spinner01);

ArrayAdapter adapter = new ArrayAdapter(this,R.layout.spinner_style, arrayList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setPrompt("구분을 선택하세요.");

spinner.setSelection(0);
spinner.setAdapter(adapter);

버튼 클릭시 :

ArrayAdapter adapter1 = new ArrayAdapter(ApplicationContext,R.layout.spinner_style, arrayList1);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setPrompt("구분을 선택하세요.");

spinner.setSelection(0);
spinner.setAdapter(adapter1);

간단히 코드 구성해봤네요!

그리고 onClick시에 스피너를 또 한번 생성하실 필요는 없습니다.

도움이 되셨으면 좋겠네요!

 

 

 

안드로메다개발자 (8,830 포인트) 님이 2013년 6월 25일 답변
앤드류이드님이 2013년 6월 25일 채택됨
...