Android > resource - 배열 리소스 <string-array>
등록일 : 2017-07-05 16:54
조회수 : 93,871
배열 리소스는 보통 /res/values/arrays.xml 에서 관리한다.
arrays.xml 파일을 새로 만들고, 배열(string-array)을 등록하고 xml과 java에서 리소스를 호출하여 보자.
1. res(리소스)에 <string-array> 등록하기
/res/values 밑에 arrays.xml 파일을 새로 만든다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="company">
<item>Samsung</item>
<item>Hyundai</item>
<item>LG</item>
<item>SK</item>
<item>KIA</item>
</string-array>
</resources>
- 배열(string-array)로 name을 company로 등록
- company 밑에 Samsung, Hyundai, LG, SK, KIA 를 속성으로 등록했다.
2. layout의 xml에서 배열 불러오기
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ListView
android:id="@+id/ListView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/company" />
</RelativeLayout>
- <ListView> 를 사용하여 <string-array> 호출
- id : ListView1 ( android:id="@+id/ListView1" )
- 속성 : name이 company인 array ( android:entries="@array/company" )
실행화면을 보자!
- 리소스에 등록된 company의 item 들이 <ListView>형태로 출력됐다.
3. Activity.java 에서 <string-array> 리소스 불러오기
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 리소스에서 name이 company인 array를 가져와서 String[] 배열에 대입
String[] company = getResources().getStringArray(R.array.company);
// company를 ArrayAdapter에 등록한다.
//(ListView는 Adapter를 통해서 등록한다.)
// simple_list_item_1은 textview를 담고 있는 xml 형태이다.
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, company);
// 리소스에서 id 가 ListView1 인 ListView를 가져온다.
// ListView에 adapter를 등록한다.
ListView listView1 = (ListView)findViewById(R.id.ListView1);
listView1.setAdapter(adapter);
}
}
- getResource().getStringArray() 를 사용하여 리소스에서 company <string-array>를 배열 형태로 가져온다.
- ListView에는 ArrayAdapter 형태로 데이터를 대입해야하기에 ArrayAdapter<String>에 company를 등록한다.
- findViewById로 ListView1 을 가져온다.
- ListView1에 Adapter를 등록한다.
- ListView에 등록한 <string-array>를 그대로 등록했기에 결과는 같다.