마스터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)));
        }
이런식으로 변형해서 써야 했던 부분이더라구요 ..
답글 대단히 감사합니다
...