Alternating colors in Listview in Android Studio App -


i looking alternate colors in listview between 2 separate colors. here listview attributes.

<listview                 android:layout_width="match_parent"                 android:layout_height="match_parent"                 android:id="@+id/efile_results_list_view"                 android:layout_gravity="top"                 android:clickable="true"                 android:background="" /> 

here creating listview.

 @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);      super.init(r.layout.activity_efile_results);      resultlistview = (listview)findviewbyid(r.id.efile_results_list_view);      if (listview() % 2 == 0) {         resultlistview.setbackgroundcolor(color.ltgray);     }     else {          resultlistview.setbackgroundcolor(color.white);     }      resultlistview.setonitemclicklistener(this);      if(lastrequestedfilings != null)     {         filings = lastrequestedfilings;     }     else     {         filings = new filingentity[1];         filings[0] = new filingentity();     }     //printresultstolog();      populateresultlist(filings); } 

you should override getview method in listview adapter can following :

view getview (int position, view convertview, viewgroup parent) {     ...     if(position % 2 == 0) {        convertview.setbackgroundcolor(color1);     else {        convertview.setbackgroundcolor(color2);     } return convertview; } 

of course convertview should have been created before. if adapter extends arrayadapter can add following line instead of dots :

convertview = super.getview(position, convertview, parent); 

checkout tutorial more information.

edit

i explain little bit more.

when want use listview, need adapter. adapter used render data, each row. listview container of row, if change background color of listview, changing color of whole container. want changing color of each row. have in adatper's method getview.

so first extend exemple arrayadatper , override getview

public class myadatper extends arrayadapter<string> {     view getview (int position, view convertview, viewgroup parent) {     convertview = super.getview(position, convertview, parent);     if(position % 2 == 0) {         convertview.setbackgroundcolor(color1);     else {         convertview.setbackgroundcolor(color2);     }     return convertview; } 

then in activity :

@override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);      resultlistview = (listview)findviewbyid(r.id.efile_results_list_view);      string[] mockvalue = {     "value 1",     "value 2",     "value 3" };      myadatper adapter = new myadapter(this, r.layout.list_item,   r.id.info_text, mockvalues));     resultlistview.setadapter(adapter);  } 

finally, create layout represent row. example inside list_item.xml:

<?xml version="1.0" encoding="utf-8"?> <relativelayout     xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="100dp"     android:layout_gravity="center"     android:layout_margin="10dp">      <textview         android:id="@+id/info_text"         android:layout_width="match_parent"         android:layout_height="match_parent" />  </relativelayout> 

i suggest @ documentation , tutorial know how working.

here gave example simple listview displaying array of string. if looking display more complex views, baseadapter.


Comments

Popular posts from this blog

html - Firefox flex bug applied to buttons? -

html - Missing border-right in select on Firefox -

c# - two queries in same method -