1. Custom listview ,:
2. Code implementation:
(1) RES/layout/Main. xml implementation:<? XML version = "1.0" encoding = "UTF-8"?> </P> <p> <linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" <br/> Android: Orientation = "vertical" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "fill_parent" <br/> </P> <p> <COM. focus. fishme. selflistview <br/> Android: Id = "@ + ID/listview" <br/> Android: Orientation = "vertical" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "fill_parent" <br/> </P> <p> </linearlayout> <br/>
(2) Implementation of listview's item layout:<? XML version = "1.0" encoding = "UTF-8"?> </P> <p> <linearlayout <br/> xmlns: Android = "http://schemas.android.com/apk/res/android" <br/> Android: Orientation = "vertical" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "fill_parent" <br/> </P> <p> <textview <br/> Android: id = "@ + ID/textviewone" <br/> Android: layout_width = "wrap_content" <br/> Android: layout_height = "wrap_content" <br/> Android: layout_marginleft = "10dip" <br/> Android: textsize = "24sp" <br/> </P> <p> <textview <br/> Android: id = "@ + ID/textviewtwo" <br/> Android: layout_width = "wrap_content" <br/> Android: layout_height = "wrap_content" <br/> Android: layout_marginleft = "10dip" <br/> </P> <p> <view <br/> Android: layout_height = "1dip" <br/> Android: layout_width = "fill_parent" <br/> Android: Background = "# ff0000" <br/> </P> <p> </linearlayout> <br/>
(3) Main activity implementation:Package COM. focus. fishme; </P> <p> Import Java. util. arraylist; <br/> Import Java. util. hashmap; <br/> Import Java. util. list; <br/> Import Java. util. map; </P> <p> Import android. app. activity; <br/> Import android. OS. bundle; </P> <p> public class selflistviewactivity extends activity {</P> <p> @ override <br/> Public void oncreate (bundle savedinstancestate) {<br/> super. oncreate (savedinstancestate); </P> <p>/** <br/> * Set the main layout. <Br/> */<br/> setcontentview (R. layout. Main); </P> <p>/** <br/> * listview dataset. <Br/> */<br/> List <Map <string, Object> mselfdata = new arraylist <Map <string, Object> (); </P> <p>/** <br/> * obtain the listview component. <Br/> */<br/> selflistview mselflistview = (selflistview) findviewbyid (R. id. listview); </P> <p>/** <br/> * generate data. <Br/> */<br/> for (INT I = 0; I <10; I ++) {<br/> hashmap <string, object> MMAP = new hashmap <string, Object> (); <br/> MMAP. put ("key_name", "name" + I); <br/> MMAP. put ("value_name", "value" + I); <br/> mselfdata. add (MMAP); <br/>}</P> <p>/** <br/> * Custom adapter. <Br/> */<br/> final selfadapter mselfadapter = new selfadapter (this, mselfdata, <br/> r. layout. item, new string [] {"key_name", "value_name"}, new int [] {R. id. textviewone, R. id. textviewtwo}); </P> <p>/** <br/> * set the adapter to listview. <Br/> */<br/> mselflistview. setselfadapter (mselfadapter); <br/>}</P> <p>}
(4) Implementation of the adapter used by listview:Package COM. focus. fishme; </P> <p> Import Java. util. list; <br/> Import Java. util. map; </P> <p> Import android. content. context; <br/> Import android. view. layoutinflater; <br/> Import android. view. view; <br/> Import android. view. viewgroup; <br/> Import android. widget. baseadapter; <br/> Import android. widget. textview; </P> <p> public class selfadapter extends baseadapter {</P> <p> private layoutinflater mlayoutinflate R; </P> <p> private int mresource; <br/> private list <? Extends Map <string,?> Mselfdata; <br/> private string [] From; <br/> private int [] to; </P> <p> Public selfadapter (context, list <? Extends Map <string,?> Data, int resouce, string [] From, int [] to) {<br/> This. mselfdata = data; <br/> This. mresource = resouce; <br/> This. mselfdata = data; <br/> This. from = from; <br/> This. to = to; <br/> This. mlayoutinflater = (layoutinflater) context. getsystemservice (context. layout_inflater_service); <br/>}</P> <p> Public int getcount () {<br/> return mselfdata. size (); <br/>}</P> <p> Public object getitem (INT position) {<br /> Return mselfdata. get (position); <br/>}</P> <p> Public String get (INT position, object key) {<br/> Map <string,?> Map = (Map <string,?>) Getitem (position); <br/> return map. get (key ). tostring (); <br/>}</P> <p> Public long getitemid (INT position) {<br/> return position; <br/>}</P> <p>/** <br/> * generate the item layout of the listview. <Br/> */<br/> Public View getview (INT position, view convertview, viewgroup parent) {<br/> If (convertview = NULL) {<br/> convertview = mlayoutinflater. inflate (mresource, null); <br/>}</P> <p> Map <string,?> Item = mselfdata. get (position); </P> <p> int COUNT =. length; </P> <p> for (INT I = 0; I <count; I ++) {<br/> View v = convertview. findviewbyid (to [I]); <br/> BindView (v, item, from [I]); <br/>}</P> <p> convertview. settag (position); </P> <p> return convertview; <br/>}</P> <p> private void BindView (view, Map <string,?> Item, string from) {<br/> Object Data = item. get (from); </P> <p> If (view instanceof textview) {<br/> (textview) view ). settext (Data = NULL? "": Data. tostring (); <br/>}</P> <p >}< br/>
(5) custom listview implementation:Package COM. focus. fishme; </P> <p> Import android. content. context; <br/> Import android. util. attributeset; <br/> Import android. view. view; <br/> Import android. widget. baseadapter; <br/> Import android. widget. linearlayout; </P> <p> public class selflistview extends linearlayout {</P> <p> private baseadapter mselfadapter; </P> <p> Public selflistview (context) {<br/> super (context); <br/>}</P> <p> Public selfl Istview (context, attributeset) {<br/> super (context, attributeset ); <br/>}</P> <p>/** <br/> * Delete the previously rendered view in listview and add a new view. <Br/> */<br/> private void buildlist () {<br/> If (mselfadapter = NULL) {</P> <p >}</P> <p> If (getchildcount ()> 0) {<br/> removeallviews (); <br/>}</P> <p> int COUNT = mselfadapter. getcount (); </P> <p> for (INT I = 0; I <count; I ++) {<br/> View view = mselfadapter. getview (I, null, null); <br/> If (view! = NULL) {<br/> addview (view, I ); <br/>}</P> <p> Public baseadapter getselfadapter () {<br/> return mselfadapter; <br/>}</P> <p>/** <br/> * set the adapter. <Br/> * @ Param selfadapter <br/> */<br/> Public void setselfadapter (baseadapter selfadapter) {<br/> This. mselfadapter = selfadapter; <br/> buildlist (); <br/>}</P> <p >}< br/>