App을 만들다 보니 목록을 만들어 사용자가 목록에서 선택한 값을 받아 처리할 일이 생겼다. 일단 가볍게 ListView의 기본 구조를 살펴보고 그 동작 원리를 파악하여 응용을 하려 한다.
1. 목적 : ListView의 사용법을 습득해 보자.
2. 개발 환경
- PC : Windows 7, Android Studio 1.4.1(64-bit)
- Phone : LG G pro Lollipop(API 21)
3. 참고자료
1) Using lists in Android (ListView) - Tutorial (http://www.vogella.com/tutorials/AndroidListView/article.html)
2) berabue 블로그 - ListView의 사용 및 Customizing (http://berabue.blogspot.kr/2014/05/android-listview.html)
3) 미르의 IT 정복기 (http://itmir.tistory.com/477)
4. 과정
1) activity_main.xml(layout을 설정)에 ListView layout을 다음과 같이 선언해 둔다.
<?xml version="1.0" encoding="utf-8"?>
<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
2) MainActivity.java(ListView의 Activity와 관련된 code 작성)에 App 생성시 ListView의 동작에 관한 code를 다음과 같이 작성한다. 이 때, 다른 variable과는 달리 ListView는 ListView 자체의 layout을 위 activity_main.xml과 같은 app의 layout에 적용시키는 역할을 하는 "Adapter"가 필요하다.
public class MainActivity extends AppCompatActivity {
public ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.listview); // 앞서 activity_main.xml에서 정의한 listview에 대하여 ListView 변수 정의
String[] listVal = new String[] { "감자", // listView에 반영될 항목을 String[] (배열, Array) 변수로 정의
"사과",
"배",
"양파",
"호박"
};
final ArrayList<String> list = new ArrayList<String>(); // String 변수들을 받는 ArrayList 변수를 선언하여 위 String[] 변수를 반영
for (int i = 0; i < listVal.length; ++i) {
list.add(listVal[i]);
}
// ArrayAdapter를 통해 Android API platform의 'res' library에 simple_list_item_1.xml에 상응하는 형태로 위의 list를 listView에 반영
final ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
listView.setAdapter(mAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ // listView에 반영된 item을 Click할 경우 다음 동작을 수행
@Override
public void onItemClick(AdapterView<?> parent, final View view, int position, long id){
final String item = (String) parent.getItemAtPosition(position); // 선택한 값을 String 문자열로 받아들여 Toast 출력
Toast.makeText(getApplicationContext(), item + " is selected!", Toast.LENGTH_SHORT).show();
}
});
}
}
(위 Code의 실행 결과)
'개발일지' 카테고리의 다른 글
[Android 기초] App에서 기본적으로 사용한 image asset 추가 (0) | 2015.11.30 |
---|---|
[Android 기초] ListView의 구조 및 예제 02 - Customizing 해보기 (0) | 2015.11.30 |
[Android Camera 활용] 직접 Custom Camera App 개발하기 02 - Intent 활용 + ImageView 추가 (0) | 2015.11.28 |
[Android Camera 활용] 직접 Custom Camera App 개발하기 01 - Intent 활용 (6) | 2015.11.27 |
jar 명령어 요약 정리 (0) | 2015.11.27 |