public class Test4Activity extends Activity {
ArrayAdapter<CharSequence> adspin;
boolean mInitSpinner;
View page1, page2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
page1 = (LinearLayout) findViewById(R.id.layer1);
page2 = (LinearLayout) findViewById(R.id.layer2);
Spinner spin = (Spinner) findViewById(R.id.spinner1);
spin.setPrompt("메뉴선택 테스트");
adspin = ArrayAdapter.createFromResource(this, R.array.selectfunc, android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(adspin);
spin.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
if (mInitSpinner == false){
mInitSpinner = true;
return;
}
Toast.makeText(Test4Activity.this, adspin.getItem(arg2)+"입니다", Toast.LENGTH_SHORT).show();
if(adspin.getItem(arg2)=="Page1")
{
page1.setVisibility(android.view.View.VISIBLE);
page2.setVisibility(android.view.View.INVISIBLE);
}
else if(adspin.getItem(arg2)=="Page2")
{
page2.setVisibility(android.view.View.VISIBLE);
page1.setVisibility(android.view.View.INVISIBLE);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}}
위에는 제가 책을 참고해서 짜본 겁니다.
프레임 레이아웃 안에 리니어레이아웃 두개가 invisible 상태이고
스피너로 선택할시 페이지가 뜨는 응용 실습을 해보았습니다.
그런데 문제가
스피너의 아이템 항목들의 id를 따와서 switch-case나 if 문에 적용시킬수가 없습니다.
.getItemId(position)을 써보려고 했는데, switch()의 괄호안에는 들어가지 않을 뿐더러
R.java에 item 아이디값이 없어서 비교가 불가합니다.
또한 .getItem(position) 매서드를 사용하는데 position에 빨간줄이 떠서 에러창에 뜨는대로 arg2로 고치긴 했는데
왜 position이 안먹히는지 모르겠습니다.
마지막으로 스피너를 선택하면 메뉴처럼 큰 팝업창이 뜹니다, mfc의 콤보박스처럼 하고싶은데
버전을 낮은걸로 해서 안뜨는 것인지요? 2.3.3버전으로 짜고 있습니다.