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

동적스피너에 항목을 추가하기 위해 알림창에서 데이터를 입력받게 하고 싶습니다.

0 추천
                String strAdd, strRet;
                Spinner spinner;


                AlertDialog.Builder addBuilder = new AlertDialog.Builder(this);
                final EditText input = new EditText(this);
                addBuilder.setView(input);
		addBuilder.setTitle("추가.")
		.setPositiveButton("추가", new DialogInterface.OnClickListener(){       
			public void onClick(DialogInterface dialog, int whichButton){
	
				strAdd = input.getText().toString();
				
				Log.d(LibTag, "addBuilder >> strAdd: " + strAdd);
			}
		});

                final AlertDialog addDialog = addBuilder.create(); 
                ArrayList<String> items = new ArrayList<String>(Arrays.asList("Select... ", "test1", "test2", "add..."));
                final ArrayAdapter<String> adapterSpinner = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items);

                adapterSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner.setAdapter(adapterSpinner);
		
                spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				strRet = spinner.getSelectedItem().toString();
				if ( strRet.compareToIgnoreCase("add...") == 0 )
				{
					addDialog.show();
					
					adapterSpinner.add(strAdd);
					adapterSpinner.notifyDataSetChanged();
				}				
			}

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

 

이게 add항목을 클릭하면 알림 창이 뜨고 데이터를 입력 받으면 그때 add() 작업과 notifyDataSetChanged() 작업을 수행해야 되는데 알림창에서 데이터를 입력받기도 전에 null값이 항목에 추가되어 버립니다.

 

어떤식으로 수정하는게 좋을까요?

 

또는..이거보다 좋은 방법이 있다면 알려주세요..감사합니다.

emerald (760 포인트) 님이 2014년 8월 29일 질문

1개의 답변

0 추천
adapterSpinner.add(strAdd);
adapterSpinner.notifyDataSetChanged();

이 소스를 다이얼로그의 클릭 이벤트에 넣으면 되지 않을까요?

쎄미 (162,410 포인트) 님이 2014년 8월 29일 답변
...