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

customView를 사용해 객체에 값 전달하기

0 추천
public class SelectButton extends Button{
    protected Context context;
    protected ArrayList<String> data; //= new ArrayList<String>();
    int item;
    public SelectButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
         
        item = attrs.getAttributeResourceValue(null, "item", 0);
        inflate(context, item, null);
         
        setOnClickListener(new OnClickListener() {
             
            @Override
            public void onClick(View v) {
                AlertDialog.Builder ab = new AlertDialog.Builder(SelectButton.this.context);
                 
                //aList.add("aaa");
                final CharSequence[] list = data.toArray(new CharSequence[data.size()]);
                ab.setItems(list , new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                         
                        Toast.makeText(SelectButton.this.context, "select : "+list[which], Toast.LENGTH_LONG).show();              
                    }
                });
                ab.create().show();
            }
        });
    }

정확하게는 리스트 다이얼로그를 만드는 중입니다.

다이얼로그 내부에 저장될 리스트의 값들을 xml 에다 선언해놓은 뷰에서 받아오는건대요

string 에 저장된 배열을 보내도록했습니다 당연히 리소스 주소가 넘어오는거죵...

그 주소의 저장된 데이터를 arraylist 에 저장하는것이 목적인데요 .. 경험해보신분 이나 비슷한류를 개발하신분 있으시면 도움부탁드립니다.

구기웅 (1,110 포인트) 님이 2013년 8월 7일 질문

1개의 답변

0 추천
문자열들을 strings.xml 에 넣고 그걸 배열화 시키고 싶으시다는건가요?

질문의 요지를 잘 모르겠네요.

 

제 추측이 맞다면

strings.xml 에 string-array 로 문자열 배열을 만들수 있습니다.

그걸 사용하여 String[] context.getResource().getStringArray(int stringArrayName);

으로 받을수 있습니다.

 

제 추측이 맞길 바라며...
아픔제로 (3,460 포인트) 님이 2013년 8월 7일 답변
제질문이 참 바보같았네요 .....
감사합니다 .. 해결했습니다 ㅠ
문제는 Strings.xml 에 정의된 스트링 배열의 값들을 attr로 통해 가져올때 오류가 발생했었거든요 .. button 뷰를 상속받았기때문에 inflate가 필요한게 아니라 item 에 저장된 리소스 주소를
        if (res != 0) {
            String[] list = getResources().getStringArray(res);
            setDataList(new ArrayList<String>(Arrays.asList(list)));
        }
이런식으로 변형해서 써야 했던 부분이더라구요 ..
답글 대단히 감사합니다
...