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());
'PROGRAMING > Android' 카테고리의 다른 글
Audio AlbumArt 가져오기. (0) | 2013.02.22 |
---|---|
android.content.CursorLoader 와 LoaderCallbacks 인터페이스 (0) | 2013.02.22 |
android.database.Cursor 와 ContentProvider[Uri] (0) | 2013.02.18 |
[widget]android.widget.ListView [3] convertView 사용과 Holder Pattern (0) | 2013.02.18 |
[widget]android.widget.ListView [2] CustomArrayAdapter --getView (0) | 2013.02.18 |