android - Set List row Background based on position in Custom Adapter -


i have a custom adapter used build list. in adapter want first,second , third row show specific colours individual backgrounds,to achieve using below code. seems backgrounds being copied rows not (0,1,2). seems row below bottom row treated row (0) , on , backgounds. how solve this:

public class topfragmentadapter extends baseadapter {  private activity activity; private arraylist<hashmap<string, string>> data; private static layoutinflater inflater=null; public imageloader imageloader;    public topfragmentadapter (activity a, arraylist<hashmap<string, string>> d) {     activity = a;     data=d;     inflater = (layoutinflater)activity.getsystemservice(context.layout_inflater_service);     imageloader=new imageloader(activity.getapplicationcontext());  }   public int getcount() {     return data.size(); }  public object getitem(int position) {     return data.get(position); }  public long getitemid(int position) {     return position; } public static class viewholder {    textview name;    textview track;    textview number;    imageview thumb; } public view getview(int position, view convertview, viewgroup parent) {     viewholder holder;     view vi=convertview;     if(convertview==null){         vi = inflater.inflate(r.layout.layout_bnmtoptenlistrow, null);      holder = new viewholder();     holder.name = (textview)vi.findviewbyid(r.id.topten_artist_name);      holder.track = (textview)vi.findviewbyid(r.id.topten_album_name);      holder.number= (textview)vi.findviewbyid(r.id.topten_number);     holder.thumb=(imageview)vi.findviewbyid(r.id.topten_list_image);       vi.settag(holder);     }     else {         holder = (viewholder) vi.gettag();     }      hashmap<string, string> hash = new hashmap<string, string>();     hash = data.get(position);        holder.name.settext("artist: "+hash.get(toplistfragment.key_name));     holder.track.settext("track: "+hash.get(toplistfragment.key_track_name));     holder.number.settext(hash.get(toplistfragment.key_number)+" listens");     imageloader.displayimage(hash.get(toplistfragment.key_image_url), holder.thumb);      setrowcolour(vi,position);     return vi; }  private void setrowcolour(view view,int position){     if( position==0){          view.setbackgroundresource(r.drawable.gold_gradient);    }     else if( position==1){         view.setbackgroundresource(r.drawable.silver_gradient);    }     else if( position==2){         view.setbackgroundresource(r.drawable.bronze_gradient);    } 

}

}

in situation had assign position underlying data , use alternate colors. (the position in view relative position of object, which, found out, bit variable depending on things how fast scroll view.)

i created own object , used arraylist of object , initializing object assigned position (basically offset). did modulo math on object position.

translist tl = entries.get(position);   // translist own object, entries array list of objects int position = tl.getposition();  if ( (position % 3) == 0 ) { } else if ( (position % 3) == 1 ) { } else if ( (position % 3) == 2 ) { } 

Comments

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -