2011-03-06 4 views
0

하드 코딩 된 요소가있는 AlertDialog를 만들 때 사용하는 Android 개발 사이트에서 다음 문서를 찾았습니다 : http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList.런타임에 생성 된 요소를 사용하여 AlertDialog 만들기

하드 코딩이 가능하면 잘 작동합니다. 그러나, 내 응용 프로그램에서는 런타임에 항목을 생성해야합니다 (생성 이전에 항목 목록의 길이조차 모릅니다). 대화 상자가 처음 요청되었을 때.

AlertDialog의 항목에 대한 예제에 사용 된 final CharSequence[] 대신 런타임에 생성 된 목록을 어떻게 사용할 수 있습니까?

감사

답변

7
  1. 변수 (이 경우 OnClickListener를)를 내부 클래스 내에서 액세스 할 경우에만 final을 할 필요가있다. 내부 클래스의 항목 목록에 액세스해야합니까?

  2. final은 참조가 변경되면 안됨을 의미합니다 (= 변수는 항상 같은 개체를 가리 킵니다). 그것은 어떻게 대상이 생성되는지를 말하지 않습니다. 당신은 쉽게 수행 할 수 있습니다

    List<String> strings = new ArrayList<String>(); 
    strings.add("Red"); 
    strings.add("Green"); 
    strings.add("Blue"); 
    
    final CharSequence[] items = strings.toArray(new String[strings.size()]); 
    
+0

저는 C++에 익숙한 Java의 초보자입니다. 그래서'final'이 무엇을 의미하는지 정말로 알지 못했습니다. 이를 해결해 주셔서 감사합니다. 이것은 완벽하게 작동합니다. – houbysoft

+0

내 코드 예측이 완전히 줄어들고 있습니다 ... 이러한 사용법은 전체 코드에 감사드립니다. @Peter knego –

0

HMN 내가 그것을 시도하지만, 대신 작성하고 당신이 경고를 생성하는 방법의 항목 []를 사용하는 클래스 명에게

final CharSequence[] items = {"Red", "Green", "Blue"}; 

를 사용하지 않았습니다. 내부 클래스는 메소드의 최종 변수에 액세스 할 수 있습니다.

+0

당신은 "다만 만들고 사용"에 자세히 설명해 주 시겠어요? CharSequence []를 동적으로 생성하는 방법이 필요합니다. 항목 목록의 길이를 알지도 못하는 것이 좋습니다. 그게 가능하니? – houbysoft

+0

오 스냅, 오른쪽 최종 배열 및 동적 initalizing ..이 작동해야하지만 추한 보입니다. "toArray-> complete"에서 생성 된 일식 : : List itemList = new ArrayList (); 마지막 CharSequence [] items = (CharSequence []) itemList.toArray (new CharSequence [itemList.size()]) ; ' – icyerasor