안드로이드 Custom ListView 만들기



Custom ListView는 기존 Listview처럼 문자열이나 이미지로만 표시하는게 아니라 원하는 레이아웃으로 항목에 표시하는 리스트 뷰입니다.


원하는 대로 항목을 표시하기 위해서 먼저  보여줄 Layout을 만듭니다.


그리고 만든 Layout을 항목에 보여주기 위해서 BaseAdapter를 상속받는 새로운 클래스를 정의하고 


다음 4개의 메소드를  Override해야 합니다.

public class CustomAdapter extends BaseAdapter {

@Override
public int getCount() {
return 0;
}

@Override
public Object getItem(int i) {
return null;
}

@Override
public long getItemId(int i) {
return 0;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
return null;
}
}


getCount() - ListView에서 사용할 데이터의 총개수

getItem(int i) - 해당 i번째의 데이터 값

getItemId(int i) - 해당 i번째 id 값

getView(int i, View view, ViewGroup viewGroup) - 이 메소드에서 화면에 보여질 아이템을 구성합니다.


getView는 스마트폰에 화면이 보여질 때 화면 구성을 위해서 호출됩니다.


즉, 데이터가 100개 들어있어도 화면에 10개의 item만 보인다면 getView를 10번 호출하고 화면에 안보이다가


다시 보이게 되는 item이 생기면 다시 getView 를 호출합니다.


ListView는 View를 재활용 하기 때문에 최초 한번만 View값이 NULL이 들어오고 그 후에 호출 되면 이미 생성된 View가 들어오게 됩니다.


따라서 아래와 같이 View가 NULL일 때만 inflate를 해주면 됩니다.

public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null) {
view = LayoutInflater.from(context).inflate(R.layout.list_item, null);
}
TextView txt1 = (TextView) view.findViewById(R.id.textName);
TextView txt2 = (TextView) view.findViewById(R.id.textTel);

txt1.setText(datalist.get(i).getName());
txt2.setText(datalist.get(i).getTell());


return view;
}


아래 예제는 Custom ListView를 사용한 예제입니다.

 

 





위 예제 코드는 gitHub에서 볼 수 있습니다.

https://github.com/Ywook/Android.practice6







+ Recent posts