Android-based alphabet listview

Source: Internet
Author: User

1. Main. xml

<? XML version = "1.0" encoding = "UTF-8"?> <Br/> <relativelayout <br/> xmns: Android = "http://schemas.android.com/apk/res/android" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "fill_parent"> <br/> <listview Android: Id = "@ + ID/mylistview" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "fill_parent" <br/> <android. test. sidebar <br/> Android: Id = "@ + ID/sidebar" <br/> Android: layout_height = "fill_parent" <br/> Android: layout_width = "22px" <br/> Android: layout_alignparentright = "true" <br/> </relativelayout>

 

 

2. listview_row.xml

<? XML version = "1.0" encoding = "UTF-8"?> <Br/> <linearlayout <br/> xmns: Android = "http://schemas.android.com/apk/res/android" <br/> Android: Orientation = "vertical" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "wrap_content"> <br/> <linearlayout <br/> Android: id = "@ + ID/section" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "wrap_content" <br/> <textview Android: Id = "@ + ID/textview" <br/> Android: layout_width = "wrap_content" <br/> Android: layout_height = "80sp" <br/> Android: textsize = "45sp" <br/> </linearlayout>

 

 

3. myadapter. Java

Package android. test; <br/> Import Java. util. arraylist; <br/> Import android. app. activity; <br/> Import android. content. context; <br/> Import android. graphics. color; <br/> Import android. view. gravity; <br/> Import android. view. layoutinflater; <br/> Import android. view. view; <br/> Import android. view. viewgroup; <br/> Import android. widget. baseadapter; <br/> Import android. widget. linearlayout; <br/> Import android Oid. widget. sectionindexer; <br/> Import android. widget. textview; <br/> public class myadapter extends baseadapter implements sectionindexer {<br/> private arraylist <string> stringarray; <br/> private context; <br/> Public myadapter (context _ context, arraylist <string> ARR) {<br/> stringarray = arr; <br/> context = _ context; <br/>}< br/> Public int getcount () {<br/> return stringarray. size (); <br/ >}< Br/> Public object getitem (INT arg0) {<br/> return stringarray. get (arg0); <br/>}< br/> Public long getitemid (INT arg0) {<br/> return 0; <br/>}< br/> Public View getview (INT position, view V, viewgroup parent) {<br/> layoutinflater inflate = (activity) context ). getlayoutinflater (); <br/> View view = (View) inflate. inflate (R. layout. listview_row, null); <br/> linearlayout header = (linearlayout) view. Findviewbyid (R. id. section); <br/> string label = stringarray. get (position); <br/> char firstchar = label. touppercase (). charat (0); <br/> If (position = 0) {<br/> setsection (header, label ); <br/>} else {<br/> string prelabel = stringarray. get (position-1); <br/> char prefirstchar = prelabel. touppercase (). charat (0); <br/> If (firstchar! = Prefirstchar) {<br/> setsection (header, label); <br/>}else {<br/> header. setvisibility (view. gone); <br/>}< br/> textview = (textview) view. findviewbyid (R. id. textview); <br/> textview. settext (Label); <br/> return view; <br/>}< br/> private void setsection (linearlayout header, string label) {<br/> textview text = new textview (context); <br/> header. setbackgroundcolor (0 xffaabbcc); <br/> text. settextcolor (color. white); <br/> text. settext (label. substring (0, 1 ). touppercase (); <br/> text. settextsize (20); <br/> text. setpadding (5, 0, 0, 0); <br/> text. setgravity (gravity. center_vertical); <br/> header. addview (text); <br/>}< br/> Public int getpositionforsection (INT section) {<br/> If (Section = 35) {<br/> return 0; <br/>}< br/> for (INT I = 0; I <stringarray. size (); I ++) {<br/> string L = stringarray. get (I); <br/> char firstchar = L. touppercase (). charat (0); <br/> If (firstchar = Section) {<br/> return I; <br/>}< br/> return-1; <br/>}< br/> Public int getsectionforposition (INT arg0) {<br/> return 0; <br/>}< br/> Public object [] getsections () {<br/> return NULL; <br/>}< br/>}

 

 

4. Sidebar. Java

Package android. test; <br/> Import android. content. context; <br/> Import android. graphics. canvas; <br/> Import android. graphics. paint; <br/> Import android. util. attributeset; <br/> Import android. view. motionevent; <br/> Import android. view. view; <br/> Import android. widget. listview; <br/> Import android. widget. sectionindexer; <br/> public class sidebar extends view {<br/> private char [] l; <br/> private sectionindexer sectionindexter = NULL; <br/> private listview list; <br/> private final int m_nitemheight = 29; <br/> Public sidebar (context) {<br/> super (context); <br/> Init (); <br/>}< br/> Public sidebar (context, attributeset attrs) {<br/> super (context, attrs); <br/> Init (); <br/>}< br/> private void Init () {<br/> L = new char [] {'A', 'B', 'C ', 'D', 'E', 'F', 'G', 'h', 'I', 'J', 'k', 'l', 'M ', 'N', 'O', 'P', 'Q', 'R', 's', <br/> 'T', 'U', 'V ', 'w', 'x', 'y', 'z'}; <br/> setbackgroundcolor (0x44ffffff ); <br/>}< br/> Public sidebar (context, attributeset attrs, int defstyle) {<br/> super (context, attrs, defstyle ); <br/> Init (); <br/>}< br/> Public void setlistview (listview _ list) {<br/> List = _ list; <br/> sectionindexter = (sectionindexer) _ list. getadapter (); <br/>}< br/> Public Boolean ontouchevent (motionevent event) {<br/> super. ontouchevent (event); <br/> int I = (INT) event. gety (); <br/> int idx = I/m_nitemheight; <br/> If (idx> = L. length) {<br/> idx = L. length-1; <br/>}else if (idx <0) {<br/> idx = 0; <br/>}< br/> If (event. getaction () = motionevent. action_down | event. getaction () = motionevent. action_move) {<br/> If (sectionindexter = NULL) {<br/> sectionindexter = (sectionindexer) list. getadapter (); <br/>}< br/> int position = sectionindexter. getpositionforsection (L [idx]); <br/> If (position =-1) {<br/> return true; <br/>}< br/> list. setselection (position); <br/>}< br/> return true; <br/>}< br/> protected void ondraw (canvas) {<br/> paint = new paint (); <br/> paint. setcolor (0xffa6a9aa); <br/> paint. settextsize (20); <br/> paint. settextalign (paint. align. center); <br/> float widthcenter = getmeasuredwidth ()/2; <br/> for (INT I = 0; I <L. length; I ++) {<br/> canvas. drawtext (string. valueof (L [I]), widthcenter, m_nitemheight + (I * m_nitemheight), paint); <br/>}< br/> super. ondraw (canvas); <br/>}< br/>}

 

 

5. Main. Java

Package android. test; <br/> Import Java. util. arraylist; <br/> Import android. app. activity; <br/> Import android. OS. bundle; <br/> Import android. widget. listview; <br/> public class main extends activity {<br/>/** called when the activity is first created. */<br/> @ override <br/> Public void oncreate (bundle savedinstancestate) {<br/> super. oncreate (savedinstancestate); <br/> setcontentview (R. layout. main); <br/> listview list = (listview) findviewbyid (R. id. mylistview); <br/> arraylist <string> stringlist = initlistviewdata (); <br/> myadapter adapter = new myadapter (this, stringlist); <br/> list. setadapter (adapter); <br/> sidebar indexbar = (sidebar) findviewbyid (R. id. sidebar); <br/> indexbar. setlistview (list); <br/>}< br/> private arraylist <string> initlistviewdata () {<br/> arraylist <string> stringlist = new arraylist <string> (); <br/> stringlist. add ("aback"); <br/> stringlist. add ("abash"); <br/> stringlist. add ("Abbey"); <br/> stringlist. add ("abhor"); <br/> stringlist. add ("abide"); <br/> stringlist. add ("Abuse"); <br/> stringlist. add ("candidate"); <br/> stringlist. add ("capture"); <br/> stringlist. add ("careful"); <br/> stringlist. add ("catch"); <br/> stringlist. add ("cause"); <br/> stringlist. add ("celebrate"); <br/> stringlist. add ("forever"); <br/> stringlist. add ("fable"); <br/> stringlist. add ("Fidelity"); <br/> stringlist. add ("Fox"); <br/> stringlist. add ("funny"); <br/> stringlist. add ("fail"); <br/> stringlist. add ("jail"); <br/> stringlist. add ("Jade"); <br/> stringlist. add ("jailor"); <br/> stringlist. add ("January"); <br/> stringlist. add ("Jasmine"); <br/> stringlist. add ("Jazz"); <br/> stringlist. add ("zero"); <br/> stringlist. add ("Zoo"); <br/> stringlist. add ("Zeus"); <br/> stringlist. add ("ZEBRA"); <br/> stringlist. add ("Zest"); <br/> stringlist. add ("zing"); <br/> return stringlist; <br/>}< 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.