스피너에 리스트 항목을 추가시키려고하는 소스입니다.
"z"라는 이름을 가진 항목을 스피너에 추가하려고 하는데 되질 않네요..
국내,해외사이트 돌아다니면서 잠안자고 24시간동안 꼬박 이거하나만 몰두했는데도 되질않으니
너무 속상하네요..
여기는 재야의 고수분들이 많으시니 꼭 해결해주시리라 믿습니다.
아래는 소스코드입니다.
public class spinner5 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Spinner spin=(Spinner)findViewById(R.id.Spinner01);
Button btn=(Button)findViewById(R.id.Button01);
List<CharSequence>planets=new ArrayList<CharSequence>();
final ArrayAdapter <CharSequence>adapter=new ArrayAdapter<CharSequence>(this, R.array.planets,planets);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(adapter);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
adapter.add("z");
adapter.notifyDataSetChanged();
spin.setAdapter(adapter);
}
});
}
}
실행을 하면 블락이 걸립니다. 블락은 다른곳에서는 걸리지 않지만 위에 빨간색으로 밑줄쳐진 부분을 실행할때만
블락상태로 빠지게 됩니다.
대체 무엇인지 문제인지요 제발 부탁드립니다.ㅠㅠ
질문 코드가 정확하지 않는 것 같네요? adapter 변수가 onCreate의 안에서 final로 정의된 로컬 변수인데, onClick에서 에러 안나고 사용되었네요? adapter 변수를 activity의 멤버 변수로 이동시켜서 해 보세요.
public class spinner5 extends Activity {
ArrayAdapter <CharSequence>adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
...
// 이 라인 수정: final ArrayAdapter <CharSequence>adapter=new ArrayAdapter<CharSequence>(this, R.array.planets,planets);
adapter=new ArrayAdapter<CharSequence>(this, R.array.planets,planets);




adapter.add("z") -> planet.add("z");
adapter.notifyDataSetChanged();
spin.setAdapter(adapter);
이렇게 바뀌어야 하는거 같은데요....
리스트에 값을 추가하고 어댑터에 알려주어야 하고,
이미 스피너에 아답터를 지정했기 때문에 다시 지정해 주실 필요는 없지요...
빌드를 해 보지 않아서 정확히 된다고 장담은 못 드리겠지만 한번 확인해 보세요