java - Blank ListView with no errors in Logcat - Android & custom adapter -


i've been trying create listview display event items, isn't showing anything. i've pretty followed this example. dq.getalleventscategory() method returns arraylist of event items.

here's activity:

public class categoryactivity extends actionbaractivity { databasequeries dq = new databasequeries(this); private arraylist<event> eventdetails; public string typesearchterm;     @override public void oncreate(bundle savedinstancestate)  {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_category);       intent = getintent();    typesearchterm = i.getstringextra(string.valueof(r.string.event_type_extra));        //try fill arraylist events     databasequeries dq = new databasequeries(this);     try {         //eventdetails = dq.getalleventscategory(typesearchterm);         eventdetails = dq.getallevents();         log.d("array size", eventdetails.size() + "");         date d = new date();        // event e = new event("bbq", "bottle cap",d, "this event", "www.google.com", d, d );        // eventdetails.add(e);        // log.d("array size after", eventdetails.size() + "");     } catch (parseexception e) {         e.printstacktrace();     }       final listview lv1 = (listview)findviewbyid(r.id.categorylistview);      lv1.setadapter(new eventitemadapter(this, eventdetails));      lv1.setonitemclicklistener(new adapterview.onitemclicklistener() {         @override         public void onitemclick(adapterview<?> a, view v, int position, long id) {             object o = lv1.getitematposition(position);             event objevent = (event)o;             toast.maketext(categoryactivity.this, "you have chosen : " + " " + objevent.geteventname(), toast.length_short).show();         }     });   }} 

my adapter:

public class eventitemadapter extends baseadapter{     private static arraylist<event> eventdetails;     private layoutinflater minflater;     private static final simpledateformat parser = new simpledateformat("dd/mm/yyyy"); //dd-mm-yyyy     private static final simpledateformat parsetime = new simpledateformat("hh:mm a");//hh:mm      public eventitemadapter(context context, arraylist<event> results) {         eventdetails = results;         minflater = layoutinflater.from(context);      }      @override     public int getcount() {         return eventdetails.size();     }      @override     public object getitem(int i) {         return eventdetails.get(i);     }      @override     public long getitemid(int i) {         return i;     }      @override     public view getview(int position, view convertview, viewgroup parent) {         viewholder holder;         if(convertview == null){             convertview =  minflater.inflate(r.layout.listview_row, null);             holder = new viewholder();             holder.eventdetailname = (textview)convertview.findviewbyid(r.id.eventdetailsname);             holder.eventdetaillocation = (textview)convertview.findviewbyid(r.id.eventdetailslocation);             holder.eventdetaildate = (textview)convertview.findviewbyid(r.id.eventdetailsdate);             holder.eventdetailstarttime = (textview)convertview.findviewbyid(r.id.eventdetailsstarttime);              convertview.settag(holder);         } else{             holder = (viewholder)convertview.gettag();         }          holder.eventdetailname.settext(eventdetails.get(position).geteventname());         holder.eventdetaillocation.settext(eventdetails.get(position).geteventlocation());         date temp = new date();         temp = eventdetails.get(position).geteventdate();         holder.eventdetaildate.settext(parser.format(temp));         date temptime = new date();         temptime = eventdetails.get(position).geteventstarttime();         holder.eventdetailstarttime.settext(parsetime.format(temptime));          //return current view         return convertview;     }       static class viewholder{         textview eventdetailname;         textview eventdetaillocation;         textview eventdetaildate;         textview eventdetailstarttime;     } } 

this item view:

    <?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:orientation="horizontal"     android:weightsum="1">      <imageview         android:id="@+id/event_photo"         android:layout_width="100dp"         android:layout_height="100dp"         android:layout_marginbottom="5dp"         android:layout_marginleft="10dp"         android:layout_marginright="10dp"         android:layout_margintop="10dp"         android:src="@drawable/ic_launcher" />      <linearlayout android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:orientation="vertical">          <textview             android:id="@+id/eventdetailsname"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="event name"             android:textappearance="?android:attr/textappearancemedium"             android:textcolor="#33cc33"             android:layout_margintop="25dp"             android:layout_marginbottom="6dp" />          <tablelayout             android:layout_width="match_parent"             android:layout_height="wrap_content">              <tablerow                 android:layout_width="fill_parent"                 android:layout_height="fill_parent">                  <textview                     android:id="@+id/time"                     android:layout_width="wrap_content"                     android:layout_height="wrap_content"                     android:text="time: "                     android:layout_marginright="5dp" />                  <textview                     android:layout_width="wrap_content"                     android:layout_height="wrap_content"                     android:text="new text"                     android:id="@+id/eventdetailsstarttime"                     android:layout_column="3" />             </tablerow>              <tablerow                 android:layout_width="fill_parent"                 android:layout_height="fill_parent">                  <textview                     android:id="@+id/date"                     android:layout_width="wrap_content"                     android:layout_height="wrap_content"                     android:text="date: "                     android:layout_marginright="5dp" />                  <textview                     android:layout_width="wrap_content"                     android:layout_height="wrap_content"                     android:text="new text"                     android:id="@+id/eventdetailsdate"                     android:layout_column="3" />             </tablerow>          </tablelayout>      </linearlayout>      <tablerow         android:layout_width="wrap_content"         android:layout_height="match_parent">          <textview             android:id="@+id/location"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="location: "             android:layout_marginright="5dp" />          <textview             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="new text"             android:id="@+id/eventdetailslocation"             android:layout_column="3" />     </tablerow>      <textview         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:textappearance="?android:attr/textappearancemedium"         android:text="medium text"         android:id="@+id/textview7" />  </linearlayout> 

and the actual listview:

    <?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"               android:orientation="vertical"               android:layout_width="match_parent"               android:layout_height="match_parent">      <include         android:id="@+id/app_bar"         layout="@layout/app_bar" />      <listview         android:layout_width="match_parent"         android:layout_height="match_parent"         android:id="@+id/categorylistview"/>  </linearlayout> 

edit:

code getalleventscategory():

public arraylist<event> getalleventscategory(string category) throws parseexception {     sqlitedatabase dq = this.getreadabledatabase();     arraylist<event> global = new arraylist<event>();       string query = "select e." + event_id + ", e." + event_name + ", e." + event_society_id + ", e."             + event_location + ", e." + event_link + ", e." + event_start_time + ", e."             + event_end_time + ", et." + event_type + " " + table_event + " e left join "             + table_has_category + " h on e." + event_id + " = h." + has_event_id             + " join " + table_event_type + " et on h." + has_event_type_id + " = et."             + event_type_id + " et." + event_type + " = \"" + category + "\";";      log.d("query ", "" + query);      cursor cursor = dq.rawquery(query, null);     int numrows = cursor.getcount();      //for loop add each event arraylist     (int = 0; < numrows; i++) {         event e = new event();          e.seteventid(integer.parseint(cursor.getstring(0)));         e.seteventname(cursor.getstring(1));         e.setsocietyid(integer.parseint(cursor.getstring(2)));         e.seteventlocation(cursor.getstring(4));          string mydate = cursor.getstring(5);         e.seteventdate(parser.parse(mydate));         e.seteventdescription(cursor.getstring(6));         e.seteventlink(cursor.getstring(7));           string mystarttime = cursor.getstring(8);         e.seteventstarttime(parsetime.parse(mystarttime));          string myendtime = cursor.getstring(9);         e.seteventendtime(parsetime.parse(myendtime));           global.add(e);           if (i < numrows) {              cursor.movetoposition(i + 1);         }          if (i > numrows) {             cursor.movetofirst();         }       }     return global; } 

i've tried without specific category search (as in using arraylist returned getallevents method) i'm still getting null pointer exception. null pointer exception getallevents , empty/blank listview getalleventscategory

getallevents() method:

public arraylist<event> getallevents() throws parseexception {     sqlitedatabase dq = this.getreadabledatabase();     arraylist<event> global = new arraylist<event>();         log.d("query ", "" + query);      cursor cursor = dq.rawquery(query, null);     int numrows = cursor.getcount();     cursor.movetofirst();     if(cursor.movetofirst()){        cursor.movetofirst();        //for loop add each event arraylist        (int = 0; < numrows; i++) {            event e = new event();             e.seteventid(integer.parseint(cursor.getstring(0)));            e.seteventname(cursor.getstring(1));            e.setsocietyid(integer.parseint(cursor.getstring(2)));            e.seteventlocation(cursor.getstring(3));             string mydate = cursor.getstring(4);            e.seteventdate(parser.parse(mydate));            e.seteventdescription(cursor.getstring(5));            if(cursor.getstring(6) != null) {                e.seteventlink(cursor.getstring(6));            }else{                e.seteventlink("");            }             string mystarttime = cursor.getstring(7);            e.seteventstarttime(parsetime.parse(mystarttime));             date date = new date();            date.settime(0);             if(cursor.getstring(8) != null){                string myendtime = cursor.getstring(8);                e.seteventendtime(parsetime.parse(myendtime));            }else{                e.seteventendtime(date);            }               global.add(e);              if (i < numrows) {                 cursor.movetoposition(i + 1);            }             if (i > numrows) {                cursor.movetofirst();            }          }     }else{        log.d("results", "no results");    }     log.d("array size", "" + global.size());     return global; } 

this logcat. d log "array size" size of array should parameter lv1.setadapter() method

first of must consider these points while using listview,

  • the height of list item view should "wrap_content".if make "match_parent", first row take space on device , there no room rest of row.

  • the height of listview should "match_parent".if make "wrap_content", recycling concept of list view not used because creates rows of listview listview display first time.it affects scrolling of listview , consume lot of memory.

you use wrong id listview in java class.the listview id in xml "listviewcategory" , listview id used in java class "categorylistview".

one thing more that,please make sure there must items in array (eventdetails) @ time of setadapter().


Comments

Popular posts from this blog

IF statement in MySQL trigger -

c++ - What does MSC in "// appease MSC" comments mean? -

javascript - Blogger related post gadget image Resize s72-c [ Need Expert Help ] -