< 개발 환경 > < 프로젝트 적용 > |
안드로이드/Android ListView Header, Footer 설정 하기 ~!
이번 포스팅에서는 Android ListView의 Header와 Footer를 설정 하는 방법에 대해 알아 보겠습니다. 헤더와 풋터는 말 그대로 ListView의 위와 아래에 View를 가리키는 말인데요, 다음과 같은 상황에 유효하게 사용 할 수 있습니다.
자 그럼 어떤 상황에서 Header와 Footer를 사용 할 수 있을까요?
<리니어 레이아웃>
<리스트뷰>
<버튼>
다음과 같은 레이아웃 배치에서는 리스트뷰만 스크롤이 들어가게 되있습니다. 하지만 <리니어 레이아웃> 과 <버튼> 에도 스크롤을 적용 하여 하나의 ListView 처럼 사용하기 위해서 어떻게 해야 할까요? 그렇습니다. 바로 ListView에 Header와 Footer를 추가해 주면 됩니다. 자세한 내용은 아래의 그림과 함께 설명해 보겠습니다.
1) 아래와 같이 XML 구성이 되어 있는 ListView의 모습 입니다. 그림 처럼 ListView만 스크롤을 사용 할 수 있는 모습을 확인 할 수 있습니다.
<리니어 레이아웃>
<리스트뷰>
<버튼>
2) ListView의 Header와 Footer를 설정해준 모습 입니다. (xml은 동일 합니다.) 이와 같이 ListView에 Header와 Footer를 설정해 주면 하나의 ListView 처럼 스크롤을 사용 할 수 있습니다.
<리스트뷰 헤더>
<리스트뷰>
<리스트뷰 풋터>
자 그럼 Header와 Footer를 설정 하는 방법에 대해 알아 보겠습니다.
package com.example.testlistviewheaderfooter.activity; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.ListView; import android.widget.Toast; import com.example.testlistviewheaderfooter.R; import com.example.testlistviewheaderfooter.adapter.CustomArrayAdapter; public class MainActivity extends Activity { private ArrayListmArrays = null; private CustomArrayAdapter mCustomArrayAdapter = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setLayout(); mArrays = new ArrayList (); mArrays.add("hi"); mArrays.add("hello"); mArrays.add("nice"); mArrays.add("to"); mArrays.add("meet"); mArrays.add("you"); mArrays.add("what"); mArrays.add("are"); mArrays.add("you"); mArrays.add("doing"); mArrays.add("here"); /** * ListView Header와 Footer는 ListView에 setAdapter를 해주기 전에 적용 시켜야 합니다. * 아니면 아래의 에러가 발생하네요^^; * * Caused by: java.lang.IllegalStateException: Cannot add header view to list -- * setAdapter has already been called. */ // Header, Footer 생성 및 등록 View header = getLayoutInflater().inflate(R.layout.header, null, false); View footer = getLayoutInflater().inflate(R.layout.footer, null, false); lt_List.addHeaderView(header); lt_List.addFooterView(footer); // Header, Footer Event 설정 header.findViewById(R.id.btn_header).setOnClickListener(mClickListener); footer.findViewById(R.id.btn_footer).setOnClickListener(mClickListener); mCustomArrayAdapter = new CustomArrayAdapter(MainActivity.this, R.layout.list_row, mArrays); // Adapter 연결 lt_List.setAdapter(mCustomArrayAdapter); } private View.OnClickListener mClickListener = new View.OnClickListener() { @Override public void onClick(View v) { if(v.getId() == 0x7f070002) Toast.makeText(MainActivity.this, "hi~~ Header Button~!!", Toast.LENGTH_SHORT).show(); Toast.makeText(MainActivity.this, "hi~~ Footer Button~!!", Toast.LENGTH_SHORT).show(); } }; /* * Layout */ private ListView lt_List = null; private void setLayout() { lt_List = (ListView) findViewById(R.id.lv_list); } } //
그리고 아래는 Header와 Footer를 제거 하실 경우의 API 입니다.
Header 제거 : ListView.removeHeaderView(View v)
Footer 제거 : ListView.removeFooterView(View v)
파일첨부 :
스크린샷 :
[실행화면] [Header, Footer 사용 X] [Header, Footer 사용 O]
감사합니다.
'Android > Listview' 카테고리의 다른 글
안드로이드/Android ListView 클릭시 색상(배경) 변경 하기 ~! (0) | 2013.02.26 |
---|---|
안드로이드/Android ExpandableListView 만들기 - 2 - (속성 추가) (8) | 2013.02.25 |
안드로이드/Android AdapterView.onItemClickListener 사용법 (2) | 2012.04.03 |
안드로이드/Android ExpandableListView 만들기 (31) | 2012.03.29 |
안드로이드/Android ArrayAdapter, BaseAdapter를 이용한 ListView 구현 (3) | 2012.03.28 |