본문 바로가기

프로그램/앱인벤터

[앱인벤터2] 리스트 만들기 - list와 for each

  앱 만들때 자주 사용할 필요가 있을 것 같아서 리스트 만드는 법만 간단히 포스팅 해보려고 한다. 




  리스트를 만들면 보통 레이블에 글씨를 표현하고자 할 때 "(내용, 내용) : (내용 내용)" 이런 형태로 내가 입력한 것은 "내용" "내용"인데, 엉뚱하게 ( ) 가로들이 섞여 나온다. 

이럴 때 해결방법이 위 그림과 같이 코팅하는 것이다. 


  먼저 리스트에 문제와 답이 들어가는 두개의 텍스트 박스가 있고, 리스트로 문제와 답이 "문제? : 답" 형태로 저장 된다고한다면, "문제?"을 나타내어줄 변수 "question3"(for each문에 인자값으로 선언됨)와 그 문제를 받아서 같은 인덱스를 갖고 있는 "답"을 나타내어 줄 변수 "answer3"를 전역변수로 밖에 선언을 하는데 빈 텍스트박스로 선언해준다. 

그리고, 1번 문제에 1번답이 올 수 있도록 Index값을 선언해줘야 하는데, 이것 역시 전역변수로 answerIndex3 = 1 로 선언하게 된다. 


 그리고 프로시저를 만들 때 리스트 값들이 줄줄이 나열될 레이블인 QuestionsAnswerLabel을 빈 값으로 선언하고, 인덱스 : 1, 리스트를 낱개로 지정해서 불러올 수 있는 for each를 꺼내어 지역변수 question3를 넣고 외부입력부분에 문제리스트인 QuestionList3을 넣고, 내부실행에 이전에 답을 가져올 전역변수인 answer3에 select list item list로 AnswerList3(답변리스트)과 answerIndex3(인덱스넘버) 대입하여 현재 문제에 해당하는 답을 가져오고, 다음답을 리스트로 나타내주기 위해 Index 갯수를 +1개 늘려주는 작업을 하고, 우리들 눈에 보이는 리스트부분(Label) 인 QuestionsAnswersLabel.Text에 join을 이용해서 QuestionText.Text (현재 사용자에의해 입력된 문제) \n(엔터) get question3(문제리스트 중 1번째 인덱스에 해당하는 문제) ":" get global answer3(답변리스트 중 1번째 인덱스에 해당하는 답변)


실행 전 : 

(캘리포니아의 주도는? 뉴욕의 주도는?) : (새크라멘토 올버니)


실행결과 : 

캘리포니아의 주도는? : 새크라멘토

뉴욕의 주도는? : 올버니



보통 for  each문리스트에서 한개씩(리스트에 있는 모두에게 개별적으로) 지정해서 꺼내올 때 사용하는 반면, for each number from to by 문은 리스트에 조건문을 넣어서 접근하는데, from(1만큼 증가하며) to(5가 총길이인 리스트이다.) by(남은 리스트가 1 이 될때까지) 이 for each 문을 반복한다.


예문 1 : 


예문 2 :

-> 레이블 디스플레이 프로시져 제작

    BroadcastListLabel(회원전체 전화번호)를 화면에 보기좋게 표시하는 프로시저의 예


    BroadcastList에 있는 전체회원들의 전화번호 리스트를 

    화면에 목록 형태로 예쁘게 뿌려준다.

    010-xxxx-xxxx

    010-xxxx-xxx2

    010-xxxx-xxx3 

    ··· ···



예문 3 : 화면 디스플레이시 제일 마지막 등록자가 앞에오는 사례



예문 4 : 화면 디스플레이시 제일 처음 등록자가 앞에오는 사례





<출처 :  David Wolber, Hal Abelson, Ellen Spertus, Liz Looney(2015), 

앱인벤터2(초판)(오일석, 이진선 번역, 서울:한빛아카데미. (원서는 2014년에 출판)>