테크 지식
[커뮤니티] 아마도 쉬운 안드로이드 어플만들기 6-4 목록 대화상자
퍼갈 때에는 반드시 저작자의 허락과 저작자의 이름(아이디)를 기록하어야 합니다.
저작자는 Snails(tjdtnsu)입니다.
제발 덧글 좀 적어주세요. 강의 적는 시간은 1시간이지만 덧글은 1분도 걸리지 않습니다.
참고 : 이 강좌는 초보자를 위한 Eclipse를 사용하였습니다.
올리는 곳 : 제 네이버 블로그, 디벨로이드 카페, App Development 카페, 프그머 카페
업로드 시간 : 매주 일요일 오후 11시
난이도 : ★★★★★★☆
지난 강좌까지는 버튼 3개까지를 이용해서 결정 및 리스너 실행을 했습니다.
이번에는 목록을 이용해 지난번보다는 조금 더 많이 선택할 수 있게 하겠습니다.
일단 선택할 목록을 만들겠습니다.
res-values에 array.xml 파일을 만듭니다.
그리고 이렇게 잘 설정합니다.
대망의 소스파일입니다.
public void dia(View v){ new AlertDialog.Builder(this) .setTitle("빈칸을 채우시오.") .setIcon(R.drawable.ic_launcher) .setItems(R.array.foods, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { String[] foods = getResources().getStringArray(R.array.foods); TextView text = (TextView)findViewById(R.id.textView6); text.setText("빈칸을 채우면 : 찾아보자 "+ foods[which]); } }) .setNegativeButton("취소",null) .show(); } |
뭐 역시 살펴보면 쉬운 예제입니다.
setItems에서 'foods'라는 배열을 가져와 선택하게 하고, 고르게 합니다.
뭐 단점이라면 Message는 못 쓴다는 겁니다.
이렇게 해서 실행해 봅니다.
여기서 which 인수가 선택한 음식 이름을 조사해 뷰로 출력합니다.
항목을 클릭할 때 선택이 완료되어 대화상자는 닫히게 됩니다.
앞 예재와는 다르게 이제 이 대화상자를 단일 선택 목록(RadioButton)으로 바꾸겠습니다.
package naver.plus; import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.os.Bundle;import android.os.Vibrator;import android.view.View;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast; public class MainActivity extends Activity { int mS = 0;. . . . public void dia(View v){ new AlertDialog.Builder(this) .setTitle("빈칸을 채우시오.") .setIcon(R.drawable.ic_launcher) .setSingleChoiceItems(R.array.foods, mS, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which){ mS=which; } }) .setPositiveButton("확인",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { String[] foods = getResources().getStringArray(R.array.foods); TextView text = (TextView)findViewById(R.id.textView6); text.setText("빈칸을 채우면 : 찾아보자 "+ foods[mS]); } }) .setNegativeButton("취소",null) .show(); } |
뭔가 다르지요, which 인수 대신 mS으로 대신 했으며, SingleChoice로 단일 선택 상자를 만들었습니다.
역시 실행해 봅니다.
이렇게 변했습니다. 그런데 이 대화 상자의 특징은
눌러도 닫히지 않다는 겁니다. 그래서 닫는 기능이 자체적으로 없어
확인, 취소를 배치해야 합니다.
다음은 체크 박스입니다.
체크 박스는 복수로 선택이 가능하며
역시 눌러도 닫히지 않습니다.
package naver.plus; import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.os.Bundle;import android.os.Vibrator;import android.view.View;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast; public class MainActivity extends Activity { boolean[] mS = {false,false,false,false,false};
. . . .
public void dia(View v){ new AlertDialog.Builder(this) .setTitle("빈칸을 채우시오.") .setIcon(R.drawable.ic_launcher) .setMultiChoiceItems(R.array.foods, mS, new DialogInterface.OnMultiChoiceClickListener() { public void onClick(DialogInterface dialog, int which, boolean isChecked) { mS[which]=isChecked; } }) .setPositiveButton("확인",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { String[] foods = getResources().getStringArray(R.array.foods); TextView text = (TextView)findViewById(R.id.textView6); String result= "찾아보자 "; for(int i=0; i<mS.length;i++){ if(mS[i]){ result += foods[i] + " "; } } text.setText(result); } }) .setNegativeButton("취소",null) .show(); } |
이렇게 바뀝니다. 많은 곳이 바뀌는데 어려우므로 풀이는 생략하겠습니다.
간단하게 말하면 mS을 참거짓값으로 지정해 체크되었는지 안되었는지를 판단하여 출력하는 것입니다.
역시 실행결과입니다.
이걸로 정말 이 정도만 하면 거의 중수 정도 단계까지 왔습니다.
다음은 그래픽 자체생성 기능 쪽으로 나가보겠습니다.