android - ImageView crashing custom adapter at getView() -


my list view crashing @ getview. when application first loads works as navigate away or take screenshot , try share app crashes. custom adapter.

public class customadapter extends baseadapter { private list<alarmitem> alarms; private context context;  public customadapter(list<alarmitem> alarms,context context) {     this.context = context;     this.alarms = alarms; }   @override public int getcount() {     return alarms.size(); }  @override public alarmitem getitem(int position) {     return alarms.get(position); }  @override public long getitemid(int position) {     return position; }  @override public view getview(int position, view convertview, viewgroup parent) {      final alarmitem item = getitem(position);     holder holder;      if(convertview==null)     {         layoutinflater layoutinflater = (layoutinflater)context.getsystemservice(context.layout_inflater_service);         convertview = layoutinflater.inflate(r.layout.my_alarm_row,parent,false);         holder = new holder();         holder.image= (roundedimageview)convertview.findviewbyid(r.id.picture);         holder.waketext =(robotolight)convertview.findviewbyid(r.id.waketext);         holder.name =(robotoregular)convertview.findviewbyid(r.id.name);         holder.period = (robotolight)convertview.findviewbyid(r.id.period);         holder.time = (robotoregular)convertview.findviewbyid(r.id.time);         holder.day1 =(robotolight)convertview.findviewbyid(r.id.day1);         holder.day2 =(robotolight)convertview.findviewbyid(r.id.day2);         holder.day3 =(robotolight)convertview.findviewbyid(r.id.day3);         holder.day4 =(robotolight)convertview.findviewbyid(r.id.day4);         holder.day5 =(robotolight)convertview.findviewbyid(r.id.day5);         holder.day6 =(robotolight)convertview.findviewbyid(r.id.day6);         holder.day7 =(robotolight)convertview.findviewbyid(r.id.day7);     }     else     {         holder = (holder)convertview.gettag();     }       urlimageviewhelper.seturldrawable(holder.image, "http://graph.facebook.com/" + item.getprofileid().trim() + "/picture?style=large");       holder.waketext.settext(context.getstring(r.string.wake_message));     holder.name.settext(item.getname()+" ");     holder.period.settext(item.getperiod());     holder.time.settext(item.gettime());      /**      * block code places sets color of particular day. if active      * sets particular colour if not inactive colour remains.      */     list<robotolight> daylist = new arraylist<robotolight>();     daylist.add(holder.day1);     daylist.add(holder.day2);     daylist.add(holder.day3);     daylist.add(holder.day4);     daylist.add(holder.day5);     daylist.add(holder.day6);     daylist.add(holder.day7);       for(int x=0;x<7;x++)     {         /**          * if day @ particular point in string equal 1 means active          * therefore set active color.          */         if(item.getdays().charat(x) == '1')         {              daylist.get(x).settextcolor(r.color.alarm_day_active);         }         else         {             daylist.get(x).settextcolor(r.color.alarm_day_inactive);         }     }       return convertview; }  public static class holder {      roundedimageview image;     robotolight waketext;     robotoregular name;     robotolight period;     robotoregular time;     robotolight day1;     robotolight day2;     robotolight day3;     robotolight day4;     robotolight day5;     robotolight day6;     robotolight day7; }    } 

this log cat

    09-04 08:02:45.948: error/androidruntime(9402): fatal exception: main     java.lang.nullpointerexception     @ com.wake.friend.adapter.alarmadapter.getview(alarmadapter.java:82)     @ android.widget.abslistview.obtainview(abslistview.java:2334)     @ android.widget.listview.makeandaddview(listview.java:1937)     @ android.widget.listview.fillspecific(listview.java:1483)     @ android.widget.listview.layoutchildren(listview.java:1765)     @ android.widget.abslistview.onlayout(abslistview.java:2178)     @ android.view.view.layout(view.java)     @ android.view.viewgroup.layout(viewgroup.java:4380)     @ android.widget.relativelayout.onlayout(relativelayout.java:948)     @ android.view.view.layout(view.java)     @ android.view.viewgroup.layout(viewgroup.java:4380)     @ android.widget.framelayout.onlayout(framelayout.java:448)     @ android.view.view.layout(view.java)     @ android.view.viewgroup.layout(viewgroup.java:4380)     @ android.support.v4.view.viewpager.onlayout(viewpager.java:1141)     @ android.view.view.layout(view.java) 

and line 82 saying null pointer exception being thrown @ this.

urlimageviewhelper.seturldrawable(holder.image, "http://graph.facebook.com/" + item.getprofileid().trim() + "/picture?style=large"); 

i using image downloading helper retrieve images web.

the reason error occurring because accessing elements of holder class outside if statement checked if convertview null. therefore works first time when list view called again , convertview isn't null holder can't accessed in same way.therefore best if put assignment inside if function so.

 public class customadapter extends baseadapter { private list<alarmitem> alarms; private context context;  public customadapter(list<alarmitem> alarms,context context) { this.context = context; this.alarms = alarms; }   @override public int getcount() { return alarms.size(); }  @override public alarmitem getitem(int position) { return alarms.get(position); }  @override public long getitemid(int position) { return position; }  @override  public view getview(int position, view convertview, viewgroup parent)  {  final alarmitem item = getitem(position); holder holder;  if(convertview==null) {     layoutinflater layoutinflater = (layoutinflater)context.getsystemservice(context.layout_inflater_service);     convertview = layoutinflater.inflate(r.layout.my_alarm_row,parent,false);     holder = new holder();     holder.image= (roundedimageview)convertview.findviewbyid(r.id.picture);     holder.waketext =(robotolight)convertview.findviewbyid(r.id.waketext);     holder.name =(robotoregular)convertview.findviewbyid(r.id.name);     holder.period = (robotolight)convertview.findviewbyid(r.id.period);     holder.time = (robotoregular)convertview.findviewbyid(r.id.time);     holder.day1 =(robotolight)convertview.findviewbyid(r.id.day1);     holder.day2 =(robotolight)convertview.findviewbyid(r.id.day2);     holder.day3 =(robotolight)convertview.findviewbyid(r.id.day3);     holder.day4 =(robotolight)convertview.findviewbyid(r.id.day4);     holder.day5 =(robotolight)convertview.findviewbyid(r.id.day5);     holder.day6 =(robotolight)convertview.findviewbyid(r.id.day6);     holder.day7 =(robotolight)convertview.findviewbyid(r.id.day7);      urlimageviewhelper.seturldrawable(holder.image, "http://graph.facebook.com/" + item.getprofileid().trim() + "/picture?style=large");       holder.waketext.settext(context.getstring(r.string.wake_message));     holder.name.settext(item.getname()+" ");     holder.period.settext(item.getperiod());     holder.time.settext(item.gettime());      /**      * block code places sets color of particular day. if active      * sets particular colour if not inactive colour remains.      */     list<robotolight> daylist = new arraylist<robotolight>();     daylist.add(holder.day1);     daylist.add(holder.day2);     daylist.add(holder.day3);     daylist.add(holder.day4);     daylist.add(holder.day5);     daylist.add(holder.day6);     daylist.add(holder.day7);       for(int x=0;x<7;x++)     {         /**          * if day @ particular point in string equal 1 means active          * therefore set active color.          */         if(item.getdays().charat(x) == '1')         {              daylist.get(x).settextcolor(r.color.alarm_day_active);         }         else         {             daylist.get(x).settextcolor(r.color.alarm_day_inactive);         }     } } else {     holder = (holder)convertview.gettag(); }      return convertview; }  public static class holder {  roundedimageview image; robotolight waketext; robotoregular name; robotolight period; robotoregular time; robotolight day1; robotolight day2; robotolight day3; robotolight day4; robotolight day5; robotolight day6; robotolight day7; }    } 

Comments

Popular posts from this blog

html - How to style widget with post count different than without post count -

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

javascript - storing input from prompt in array and displaying the array -