앞서 기본 ListView code를 보다가 Adapter를 잘 이용하면 사용자의 입맛에 맞는 ListView layout을 적용하여 Custom ListView를 생성할 수 있지 않을까 싶었다. 실제로 검색해보니 많은 분들이 CustomListView를 구성하여 활용하였고, 그 방법 또한 구체적으로 설명을 하고 있었다. 이제 나도 Customizing을 해 봐야지.
|
[사진 1] Android Studio에서 해당 App의 External Libraries 중 Android API로 주어진 자료들을 뒤져보면 앞서 Adapter에 적용된 'simple_list_view_1.xml'을 사진과 같이 찾을 수 있었다. 이를 통해서 Custom ListView를 만들려면 ListView에 대한 .xml 작성이 필요할 것이라는 추측이 들었다. |
1. 목적 : 기본 ListView를 customizing하여 사용해 보자.
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) 원하는 모양의 ListView Layout을 만들기 위해 listview_custom.xml을 다음과 같이 만든다. 필요에 따라 TextView를 추가하고 그림(ImageView)를 빼는 등 사용자의 입맛에 맞게 제작하면 된다. 나는 ImageView 1개와 TextView 2개를 다음과 같이 구성하였다.
|
|
2) Layout을 Customizing했으면 해당 Layout을 받을 ListViewAdapter도 Customizing한다. BaseAdapter를 받아 필수 요소는 아래와 같이 Override하는데, 특히 해당 위치를 보여주는 getView() 같은 경우에는 미리 Custom ListView의 요소를 Holder하여 값을 받도록 지정한다.
| |||
|
|
3) 마지막으로 CustomListView를 App에 반영한다. 여기서는 MainActivity.java에 다음과 같이 사용하였다.
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와 연결
final CustomListViewAdapter mAdapter = new CustomListViewAdapter(this);
listView.setAdapter(mAdapter);
// CustomListViewAdapter의 addItem() method를 통해 Item 추가
mAdapter.addItem(getResources().getDrawable(R.mipmap.apple), "과일", "사과");
mAdapter.addItem(getResources().getDrawable(R.mipmap.pair), "과일", "배");
mAdapter.addItem(getResources().getDrawable(R.mipmap.potato), "채소", "감자");
mAdapter.addItem(getResources().getDrawable(R.mipmap.pumpkin), "채소", "호박");
mAdapter.addItem(getResources().getDrawable(R.mipmap.onion), "채소", "양파");
// CustomListView의 Item을 누를 경우 Toast를 출력하도록 작성
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, final View view, int position, long id){
CustomListData mData = mAdapter.mListData.get(position);
Toast.makeText(getApplicationContext(), mData.mText01+" "+mData.mTest02+" is selected!", Toast.LENGTH_SHORT).show();
}
});
}
}
(위 Code의 실행 결과)
'개발일지' 카테고리의 다른 글
[Android 기초] ExpandableListView의 이해 및 사용 (3) | 2015.11.30 |
---|---|
[Android 기초] App에서 기본적으로 사용한 image asset 추가 (0) | 2015.11.30 |
[Android 기초] ListView의 구조 및 예제 01 - 기초 (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 |