android - Using custom simpleCursorAdapter -
i trying access list-activity using custom adapter.i have tried directly without using custom adapter working because want add more functions in list-view want implement custom adapter.now have tried getting empty list-view no data visible. list-activity
public class mainactivity extends listactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); string selection = mediastore.audio.media.is_music + " != 0"; string[] projection = { mediastore.audio.media._id, mediastore.audio.media.artist, mediastore.audio.media.title, mediastore.audio.media.data, mediastore.audio.media.display_name, mediastore.audio.media.duration, }; //query musiccursor = this.managedquery(mediastore.audio.media.external_content_uri,projection,selection,null,sortorder); music_column_index = musiccursor.getcolumnindexorthrow(mediastore.audio.media.data); int a[]= new int[]{r.id.titlesong,r.id.artist}; custom_adapter adapter = new custom_adapter(this,r.layout.music_items, musiccursor, new string[]{mediastore.audio.media.title,mediastore.audio.media.artist} ,a); this.setadapter(adapter); } }
custom-adapter
public class custom_adapter extends simplecursoradapter { private context mcontext; private context appcontext; private int layout; private cursor cr; private final layoutinflater inflater; public custom_adapter(context context,int layout, cursor c,string[] from,int[] to) { super(context,layout,c,from,to); this.layout=layout; this.mcontext = context; this.inflater=layoutinflater.from(context); this.cr=c; } @override public void bindview(view view, context context, cursor cursor) { // todo auto-generated method stub super.bindview(view, context, cursor); view=inflater.inflate(layout, null, false); textview titles=(textview)view.findviewbyid(r.id.titlesong); textview artists=(textview)view.findviewbyid(r.id.artist); int title_index; int artist_index; cursor.movetofirst(); while(cursor.islast()){ title_index=cursor.getcolumnindexorthrow(mediastore.audio.media.display_name); artist_index=cursor.getcolumnindexorthrow(mediastore.audio.media.artist); titles.settext(cursor.getstring(title_index)); artists.settext(cursor.getstring(artist_index)); cr.movetonext(); } } @override public view getview(int position, view convertview, viewgroup parent) { // todo auto-generated method stub return convertview; } }
when extending cursor adapter should override methods bindview , newview. bindview method used bind data given view such setting text on textview. newview method used inflate new view , return it, don't bind data view @ point. adapters use getview function when extending cursor adapter should use bindview , newview.
public class custom_adapter extends simplecursoradapter { private context mcontext; private context appcontext; private int layout; private cursor cr; private final layoutinflater inflater; public custom_adapter(context context,int layout, cursor c,string[] from,int[] to) { super(context,layout,c,from,to); this.layout=layout; this.mcontext = context; this.inflater=layoutinflater.from(context); this.cr=c; } @override public view newview (context context, cursor cursor, viewgroup parent) { return inflater.inflate(layout, null); } @override public void bindview(view view, context context, cursor cursor) { super.bindview(view, context, cursor); textview titles=(textview)view.findviewbyid(r.id.titlesong); textview artists=(textview)view.findviewbyid(r.id.artist); int title_index=cursor.getcolumnindexorthrow(mediastore.audio.media.display_name); int artist_index=cursor.getcolumnindexorthrow(mediastore.audio.media.artist); titles.settext(cursor.getstring(title_index)); artists.settext(cursor.getstring(artist_index)); } }
Comments
Post a Comment