프로그래밍/안드로이드

안드로이드 - ListFragment 만들기

가카리 2015. 9. 13. 18:22
반응형

 

ListFragment는 리스트뷰로 가득 채워진 프래그먼트이며 목록을 보여주고 관리하는 것이 주된 임무이다.

 

ListFragment 내부에는 단 하나의 리스트뷰 위젯만 배치되어 있으며 이 위젯에 목록이 표시된다.

 

구조나 프로그래밍 방법은 ListActivity와 비슷하다. getListView()메소드로 내부의 리스트뷰를 언제든지 구해 속성을 조정하거나

 

메소드를 호출 할 수 있다.

 

setListAdapter 메소드로 어댑터를 지정하면 어댑터의 목록이 리스트뷰에 나타나며 리스트의 항목을 클릭하면

 

onListItemClick 콜백 메소드가 호출된다.

 

다음은 ListFragment로 리스트뷰와 같은 기능을 만드는 예제이다.

 

오직 ListFragmentTest.java 파일만 있으면 된다.

package com.example.ch20_listfragmenttest;

 

import android.app.Activity;

import android.app.FragmentManager;

import android.app.ListFragment;

import android.os.Bundle;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.ListView;

import android.widget.Toast;

 

 

public class ListFragmentTest extends Activity {

    public static String[] WORDS = {

        "1", "2", "3", "4", "5", "6"

    };

    

    public static String[] DESC = {

        "숫자1", "숫자2", "숫자3", "숫자4", "숫자5", "숫자6"

 

    };

    

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_list_fragment_test);

          

        

        FragmentManager fm = getFragmentManager();

        if(fm.findFragmentById(android.R.id.content)==null){

            WordListFragment wordlist = new WordListFragment();

            fm.beginTransaction().add(android.R.id.content, wordlist).commit();

        }

        

    }

    

    public class WordListFragment extends ListFragment{

        

        public void onActivityCreated(Bundle savedInstanceState){

            super.onActivityCreated(savedInstanceState);

            //리스트뷰를 만듬

            setListAdapter(new ArrayAdapter<String>(getActivity(),

                    android.R.layout.simple_list_item_1, WORDS));

        }

        

        //리스트뷰 아이템이 클릭됬을때 출력하는 부분

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

            String toast = WORDS[position] + " : " + DESC[position];

            Toast.makeText(getActivity(), toast, 0).show();

    }

      

}

}

 

출력 화면