Custom listview in Android

Source: Internet
Author: User

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/>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.