[widget]android.widget.CursorAdapter, ViewHolder pattern
CursorAdapter : 데이터베이스의 data를 리스트에 바인딩 할때 사용한다.
* CursorAdapter는 newView 의 View는 재 사용 한다.
==>ArrayAdapter에서 getView에서 하는 View 재사용 하는 로직이 없다.
ViewHolder pattern을 사용하여 bindView에서 findViewById 함수 사용을 줄인다.
ListView listViewTmp = (ListView)findViewById(R.id.listView1);
Cursor cursor = getMusicDataList();
cursorAdapter = new CursorAdapter(this, cursor) {
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LOG.i(CLASSNAME,"newView");
ViewHolder viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.custom_list_item, parent,false);
viewHolder.tv = (TextView)view.findViewById(R.id.text1);
view.setTag(viewHolder);
return view;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
LOG.i(CLASSNAME,"bindView");
ViewHolder holder = (ViewHolder) view.getTag();
String id = cursor.getString(cursor.getColumnIndex(android.provider.MediaStore.Audio.Media._ID));
holder.tv.setText(id);
}
};
listViewTmp.setAdapter(cursorAdapter);
LOG.i(CLASSNAME,"cursorAdapter.getCount() : "+cursorAdapter.getCount());