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

Spinner values 에서 값 집어넣는부분 질문이 있습니다.

0 추천
<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <string-array name = "year">
        <item>2010</item>
        <item>2011</item>
        <item>2012</item>
        <item>2013</item>
        <item>2014</item>
        <item>2015</item>
        <item>2016</item>
        <item>2017</item>
        <item>2017</item>
        <item>2018</item>
        <item>2019</item>
        <item>2020</item>
    </string-array>

이렇게  values 값을 하고있는데

이러한 값은 고정값이라서 시간이 지나면 직접 바꿔줘야 하는데

 

현재 시간을 가져와서 for문을 돌리려고 하는데 어떻게 넣어야 할지 몰라서 질문을 드리게 되었습니다.

        SimpleDateFormat CurYearFormat = new SimpleDateFormat("yyyy");
		
		String strCurYear = CurYearFormat.format(date);
		
		int y1 = Integer.parseInt((String)strCurYear);
		int a = y1-5; 
		
		for(int i = 0; i < 15; i++)
		{
			a = a+1;
			<item>a</item>	
		}

아래처럼 for문을 넣으면 넣을수가 없다고

[2014-07-08 09:13:16 - VTPMsAPP] Error in an XML file: aborting build.

The content of elements must consist of well-formed character data or markup.

라는 구문이 나오게 됩니다. 

Noswind (2,330 포인트) 님이 2014년 7월 8일 질문

1개의 답변

+1 추천
 
채택된 답변
XML은 고정된 값이라 나중에
XML resource를 연결시켜준 Adapter쪽에
mAdapter.add("2010"); 이런식으로
추가하거나 해야합니다
 
이코드가 맞을듯싶네요..
ArrayList<CharSequence> yearList = new ArrayList<CharSequence>();
SimpleDateFormat CurYearFormat = new SimpleDateFormat("yyyy");
        String strCurYear = CurYearFormat.format(new Date());
        int y1 = Integer.parseInt((String)strCurYear);
        int a = y1-5; 
        for(int i = 0; i < 15; i++) {
            a = a+1;
            yearList.add(String.valueOf(a));
        }
        mAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_dropdown_item, yearList);
spin.setAdapter(mAdapter);

 

whdrb19 (23,520 포인트) 님이 2014년 7월 8일 답변
Noswind님이 2014년 7월 8일 채택됨
mAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_dropdown_item, yearList);
spin.setAdapter(mAdapter);
를 사용 할수가 없다고 나옵니다.
하지만 이렇게 리스트로 넣게 되면 제가 처음에 구현하였던 현재 시간과 비교해서 디폴트값을 현재값으로 넣어주는 부분과 충돌이 나서 실행이 되지 않아서 포기할까 합니다...
디폴트값을 넣어준것도... ArrayAdapter로 구현이되어있기때문에...
remove시켜주고 다시add시켜주고 해도됩니다
Spinner라는 View와
날짜를 가져온 데이터와
그걸 바인딩을 해주는 Adapter의 개념을 상세하게 아셔야될거같네요
...