취소

커뮤니티

가이드

서포트

전체

 

퍼갈 때에는 반드시 저작자의 허락과 저작자의 이름(아이디)를 기록하어야 합니다.

저작자는 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을 참거짓값으로 지정해 체크되었는지 안되었는지를 판단하여 출력하는 것입니다. 

 

역시 실행결과입니다. 

 

 

 

이걸로 정말 이 정도만 하면 거의 중수 정도 단계까지 왔습니다. 

다음은 그래픽 자체생성 기능 쪽으로 나가보겠습니다.