반응형



이전 까지 ListView를 통해 많은 데이터를 표시하는  예제를 소개했었습니다.


리스트뷰는 많은 어플에서 실제로 활용도가 높아

많이 사용됩니다.


특히 액티비티 화면전체가 리스트형태로 되어 있는 경우도 많습니다.

해서 ListView를 만들필요없이

액티비티(Activity)가 기본적으로 ListView를 보유하도록 만들었습니다.


이렇게 만들어진 것이 ListActivity 입니다.


즉, ListView가 이미 설정되어 있는 액티비티라고 보면 됩니다.


여기서 중요한 것은

 이미 이 액티비티는 화면에 보여 줄 View객체가 설정되어 있다는 것입니다.


다들 아시다시피

액티비티는 setContentView() 메소드를 통해 보여줄 View를 설정합니다.

ListActivity는 이 작업을 하지 않는다는 거죠.


코드가 간단하니 소스코드만 소개하겠습니다.

참고로 setContentView()메소드가 없는 만큼 xml 레이아웃 파일은 필요없네요.


리스트를 보여주고 선택하면 해당 문자열 데이터가 Toast로 출력되는 예제소소입니다.



리스트 액티비티(ListActivity)에서 주요한 역할을 하는 코딩 부분은 굵게 표시했습니다. 

 MainActivity.java


public class MainActivity extends ListActivity {

//ListActivity- Activity가 보여줄 View로 이미 ListView를 설정한 Activity

//일반 Activity와 다르게 setContentView()메소드를 사용하지 않음

//이미 ListView 객체가 설정되어 있음

//대량의 문자열 데이터를 저장할 Arraylist 객체 생성

ArrayList<String> mDatas= new ArrayList<String>();


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//여기에 자동으로 써있는 setContentView()메소드 삭제

//문자열 데이터 ArrayList에 추가

mDatas.add("KOREA");

mDatas.add("CANADA");

mDatas.add("FRANCE");

mDatas.add("MEXICO");

mDatas.add("POLAND");

mDatas.add("SAUDI ARABIA");

//ListView가 보여줄 뷰를 만들어내는 Adapter 객체 생성

//ArrayAdapter : 문자열 데이터들을 적절한 iew로 1:1로 만들어서 List형태로 ListView에 제공하는 객체

//첫번째 파라미터 : Context객체 ->MainActivity가 Context를 상속했기 때문에 this로 제공 가능

//두번째 파라미터 : 문자열 데이터를 보여줄 뷰. ListView에 나열되는 하나의 아이템 단위의 뷰 모양

//세번째 파라미터 : adapter가 뷰로 만들어줄 대량의 데이터들

//본 예제에서는 문자열만 하나씩 보여주면 되기 때문에 두번째 파라미터의 뷰 모먕은 Android 시스템에서 제공하는

//기본 Layout xml 파일을 사용함.

ArrayAdapter adapter= new ArrayAdapter(this, android.R.layout.simple_list_item_1, mDatas);

//ListActivity가 가지고 있는 ListView에 Adapter 설정

//getListView() 메소드로 보유하고 있는 ListView 객체를 얻어올 수 있음

setListAdapter(adapter);

}

//ListActivity의 List를 클릭했을 때 자동으로 호출되는 메소드

//첫번째 파라미터 : ListActivity가 보유하고 있는 ListView 객체

//두번째 파라미터 : List중에 선택된 아이템 뷰(View)

//세번째 파라미터 : 클릭된 아이템의 위치

//네번째 파라미터 : 클릭된 아이템의 아이디(기본값은 position과 동일)

@Override

protected void onListItemClick(ListView l, View v, int position, long id) {

// TODO Auto-generated method stub

Toast.makeText(MainActivity.this, mDatas.get(position), Toast.LENGTH_SHORT).show();

super.onListItemClick(l, v, position, id);

}

}




결과화면


   


반응형

+ Recent posts