Android: How to get the id of the CustomListView item fetched from database? -


hi guys searching solution problem since 8 days still couldn't find solution implementations used gave me null pointer exception.

well, here issue, creating app allowing user able comment on particular item of list-view, on button click user redirected comments page containing comments related post.

so need button able id of post can write logic on how id query database , display comments specific post

here files related project;

feedlistadapter

public class feedlistadapter extends baseadapter {     private activity activity;     private layoutinflater inflater;     private list<feeditem> feeditems;     private listview lv;     private feeditem fi;      imageloader imageloader = appcontroller.getinstance().getimageloader();      public feedlistadapter(activity activity, list<feeditem> feeditems) {         this.activity = activity;         this.feeditems = feeditems;     }      @override     public int getcount() {         return feeditems.size();     }      @override     public object getitem(int location) {         return feeditems.get(location);     }      @override     public long getitemid(int position) {         return position;     }      @override     public view getview(int position, view convertview, viewgroup parent) {          if (inflater == null)             inflater = (layoutinflater) activity                     .getsystemservice(context.layout_inflater_service);         if (convertview == null)             convertview = inflater.inflate(r.layout.feed_item, null);          if (imageloader == null)             imageloader = appcontroller.getinstance().getimageloader();          textview name = (textview) convertview.findviewbyid(r.id.name);         textview timestamp = (textview) convertview                 .findviewbyid(r.id.timestamp);         textview statusmsg = (textview) convertview                 .findviewbyid(r.id.txtstatusmsg);         textview url = (textview) convertview.findviewbyid(r.id.txturl);         networkimageview profilepic = (networkimageview) convertview                 .findviewbyid(r.id.profilepic);         feedimageview feedimageview = (feedimageview) convertview                 .findviewbyid(r.id.feedimage1);          final feeditem item = feeditems.get(position);         button ops= (button) convertview.findviewbyid(r.id.ops);         name.settext(item.getname());         ops.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 intent myintent = new intent(activity,  post.class);                  activity.startactivity(myintent);                 }         });         // converting timestamp x ago format         charsequence timeago = dateutils.getrelativetimespanstring(                 long.parselong(item.gettimestamp()),                 system.currenttimemillis(), dateutils.second_in_millis);         timestamp.settext(timeago);           // chcek empty status message         if (!textutils.isempty(item.getstatus())) {             statusmsg.settext(item.getstatus());             statusmsg.setvisibility(view.visible);         } else {             // status empty, remove view             statusmsg.setvisibility(view.gone);         }          // checking null feed url         if (item.geturl() != null) {             url.settext(html.fromhtml("<a href=\"" + item.geturl() + "\">"                     + item.geturl() + "</a> "));              // making url clickable             url.setmovementmethod(linkmovementmethod.getinstance());             url.setvisibility(view.visible);         } else {             // url null, remove view             url.setvisibility(view.gone);         }          // user profile pic         profilepic.setimageurl(item.getprofilepic(), imageloader);          // feed image         if (item.getimge() != null) {             feedimageview.setimageurl(item.getimge(), imageloader);             feedimageview.setvisibility(view.visible);             feedimageview                     .setresponseobserver(new feedimageview.responseobserver() {                         @override                         public void onerror() {                         }                          @override                         public void onsuccess() {                         }                     });         } else {             feedimageview.setvisibility(view.gone);         }          return convertview;     }     public void setmylist(list mylistofobjects) {         this.feeditems = mylistofobjects;         this.notifydatasetchanged();     } } 

feeditem

public class feeditem {     private int id;     private string name, status, image, profilepic, timestamp, url;     private button but;     public feeditem() {     }      public feeditem(int id, string name, string image, string status,                     string profilepic, string timestamp, string url, button but) {         super();         this.id = id;         this.name = name;         this.image = image;         this.status = status;         this.profilepic = profilepic;         this.timestamp = timestamp;         this.url = url;         this.but= but;     }      public int getid() {         return id;     }      public void setid(int id) {         this.id = id;     }      public string getname() {         return name;     }      public void setname(string name) {         this.name = name;     }      public string getimge() {         return image;     }      public void setimge(string image) {         this.image = image;     }      public string getstatus() {         return status;     }      public void setstatus(string status) {         this.status = status;     }      public string getprofilepic() {         return profilepic;     }      public void setprofilepic(string profilepic) {         this.profilepic = profilepic;     }      public string gettimestamp() {         return timestamp;     }      public void settimestamp(string timestamp) {         this.timestamp = timestamp;     }      public string geturl() {         return url;     }      public void seturl(string url) {         this.url = url;     }  } 

fragmentone

public class fragmentone extends baseactivity {     private static final string tag = fragmentone.class.getsimplename();     private listview listview;     private feedlistadapter listadapter;     private list<feeditem> feeditems;     private string url_feed = "http://fomains.esy.es/android_app_api/json.php";     public  int pid;     private button b1;     public cursoradapter me;     public arrayadapter my;     int global_position =0;     feedlistadapter feedi;       @suppresslint("newapi")     @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         getlayoutinflater().inflate(r.layout.fragment_layout_one, framelayout);          mdrawerlist.setitemchecked(position, true);         settitle(listarray[position]);          listview = (listview) findviewbyid(r.id.list);         b1 = (button) findviewbyid(r.id.button);          feeditems = new arraylist<feeditem>();          listadapter = new feedlistadapter(this, feeditems);         listview.setadapter(listadapter);         listview.setonitemclicklistener(new adapterview.onitemclicklistener() {             @override             public void onitemclick(adapterview<?> parent, view view, int position, long id) {                 global_position=position;                 toast.maketext(getapplicationcontext(),""+global_position,toast.length_long).show();              }         });           // these 2 lines not needed,         // of facebook (changing background color & hiding icon)         getactionbar().setbackgrounddrawable(new colordrawable(color.parsecolor("#ff6600")));         getactionbar().seticon(                 new colordrawable(getresources().getcolor(android.r.color.transparent)));          // first check cached request         cache cache = appcontroller.getinstance().getrequestqueue().getcache();         entry entry = cache.get(url_feed);         if (entry != null) {             // fetch data cache             try {                 string data = new string(entry.data, "utf-8");                 try {                     parsejsonfeed(new jsonobject(data));                 } catch (jsonexception e) {                     e.printstacktrace();                 }             } catch (unsupportedencodingexception e) {                 e.printstacktrace();             }          } else {             // making fresh volley request , getting json             jsonobjectrequest jsonreq = new jsonobjectrequest(method.get,                     url_feed, null, new response.listener<jsonobject>() {                  @override                 public void onresponse(jsonobject response) {                     volleylog.d(tag, "response: " + response.tostring());                     if (response != null) {                         parsejsonfeed(response);                     }                 }             }, new response.errorlistener() {                  @override                 public void onerrorresponse(volleyerror error) {                     volleylog.d(tag, "error: " + error.getmessage());                 }             });              // adding request volley request queue             appcontroller.getinstance().addtorequestqueue(jsonreq);         }          b1.setonclicklistener(new view.onclicklistener(){              @override              public void onclick(view v) {                  intent myintent = new intent(fragmentone.this, post.class);                   fragmentone.this.startactivity(myintent);              }          });         listview.invalidateviews();     }      /**      * parsing json reponse , passing data feed view list adapter      * */     private void parsejsonfeed(jsonobject response) {         try {             jsonarray feedarray = response.getjsonarray("feed");              (int = feedarray.length()-1 ; >=0 ; i--) {                 jsonobject feedobj = (jsonobject) feedarray.get(i);                   feeditem item = new feeditem();                 item.setid(feedobj.getint("id"));                 item.setname(feedobj.getstring("name"));                  pid = feedobj.getint("id");                  // image might null                 string image = feedobj.isnull("image") ? null : feedobj                         .getstring("image");                 item.setimge(image);                 item.setstatus(feedobj.getstring("status"));                 item.setprofilepic(feedobj.getstring("profilepic"));                 item.settimestamp(feedobj.getstring("timestamp"));                   // url might null                 string feedurl = feedobj.isnull("url") ? null : feedobj                         .getstring("url");                 item.seturl(feedurl);                  feeditems.add(item);              }              listview.invalidateviews();             // notify data changes list adapater              listadapter.notifydatasetchanged();         } catch (jsonexception e) {             e.printstacktrace();         }     }      @override     public boolean oncreateoptionsmenu(menu menu) {         getmenuinflater().inflate(r.menu.menu_main, menu);         return true;     } 

well above code getting data database , displaying using custom list adapter

so guys can me out problem

you not using viewholder pattern, suggest use viewholder pattern can use follows,

class viewholder {     textview name;     textview timestamp;     textview statusmsg;     textview url;     feedimageview feedimageview;     networkimageview profilepic;     button ops; }  @override public view getview(final int position, view convertview, viewgroup parent) {      final viewholder viewholder;      if (convertview == null) {         layoutinflater layoutinflater = (layoutinflater) context.getsystemservice(layout_inflater_service);         viewholder = new viewholder();         viewholder.name = (textview) convertview.findviewbyid(r.id.name);         viewholder.timestamp = (textview) convertview             .findviewbyid(r.id.timestamp);         viewholder.statusmsg = (textview) convertview             .findviewbyid(r.id.txtstatusmsg);         viewholder.url = (textview) convertview.findviewbyid(r.id.txturl);         viewholder.profilepic = (networkimageview) convertview             .findviewbyid(r.id.profilepic);         viewholder.feedimageview = (feedimageview) convertview             .findviewbyid(r.id.feedimage1);         viewholder.ops = (button) convertview.findviewbyid(r.id.ops);         convertview.settag(viewholder);     } else {         viewholder = convertview.gettag();         viewholder.ops.settag(null);     }     viewholder.ops.settag(/*give id whatever u want to*/);     /* follow other part of code */ } 

in on click method of button ops can tag same , use query db.

hope helps cheers!!


Comments