본문 바로가기
프로그래밍/Android

Android BaseAdapter

by CaffeLatte 2014. 4. 17.

Adapter란,
ListView에 출력할 Data를 보관하는 장소

getCount()
: Adapter가 관리할 Data의 개수를 설정

getItem(int position)
: Adapter가 관리하는 Data의 Item의 Position을 객체 형태로 얻어옴

getItemId(int position)
: Adapter가 관리하는 Data의 Item의 Position값의 Id를 얻어옴

getView(int position, View convertView, ViewGroup parent)
: ListView에 뿌려질 Row를 설정


class ViewHolder{}
: getView()의 속도향상을 위함
  한번의 findViewById로 재사용하기 위해 viewHolder를 사용


public class BaseListAdapter extends BaseAdapter {
private Context context;
private ArrayList<Object> dataList;
private LayoutInflater layoutInflater;

public BaseListAdapter(Context context, ArrayList<Object> dataList) {
this.context = context;
this.dataList = dataList;
this.layoutInflater = LayoutInflater.from(context);
}

@Override
public int getCount() {
return dataList.size();
}

@Override
public Object getItem(int index) {
return dataList.get(index);
}

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

@Override
public View getView(int index, View view, ViewGroup viewGroup) {
View v = view;
ViewHolder holder = null;

if (v == null) {
v = layoutInflater.inflate(R.layout.list_item, viewGroup, false);
holder = new ViewHolder();
holder.text = (TextView) v.findViewById(R.id.text);

v.setTag(holder);
} else {
holder = (ViewHolder) v.getTag();
}

Object item = getItem(index);
holder.text.setText(String.valueOf(item));

return v;
}

private class ViewHolder {
private TextView text;
}

}


댓글