listview - Dynamically updating list view from XML file at server in Android -


i've xml file present @ server, want update list view using data present @ xml file in server , whenever data updated in xml, reflect automatically in list. i've code that's working fine separately when put same code in project won't work.

here code:

contactdetail.xml file parse

<contact-detail> <person>     <name>anshul thakur</name>     <phone>9882222225</phone>     <email>anshul9@gmail.com</email>     <image-url>https://anshulthakur939.000webhostapp.com/wp-admin/genesis_app_data/contact_data/me_small.jpg</image-url> </person> <person>     <name>a thakur</name>     <phone>988000005</phone>     <email>anshulth9@gmail.com</email>     <image-url>https://anshulthakur939.000webhostapp.com/wp-admin/genesis_app_data/contact_data/me_small.jpg</image-url> </person> <person>     <name>arun thakur</name>     <phone>988111115</phone>     <email>anshulth9@gmail.com</email>     <image-url>https://anshulthakur939.000webhostapp.com/wp-admin/genesis_app_data/contact_data/me_small.jpg</image-url> </person> <person>     <name>sample</name>     <phone>988222222</phone>     <email>anshul939@gmail.com</email>     <image-url>https://anshulthakur939.000webhostapp.com/wp-admin/genesis_app_data/contact_data/me_small.jpg</image-url> </person> <person>     <name>sample</name>     <phone>982222222</phone>     <email>anshu9@gmail.com</email>     <image-url>https://anshulthakur939.000webhostapp.com/wp-admin/genesis_app_data/contact_data/default.jpg</image-url> </person> 

sitesxmlpullparser.java

package com.atechgeek.genesis.xmlpullparser;  import android.content.context;  import com.atechgeek.genesis.helperobj.contactdetail;  import org.xmlpull.v1.xmlpullparser; import org.xmlpull.v1.xmlpullparserfactory;  import java.io.bufferedreader; import java.io.fileinputstream; import java.io.inputstreamreader; import java.util.arraylist; import java.util.list;  /**  * created anshul thakur on 7/27/2017.  */  public class sitesxmlpullparser {     static final string key_person = "person";     static final string key_name = "name";     static final string key_email = "email";     static final string key_phone = "phone";     static final string key_image_url = "image-url";     public static list<contactdetail> getcontactdetailfromfile(context ctx)     {         //list return         list<contactdetail> contactdetails = new arraylist<contactdetail>();         // temp holder current <person> tag while parsing         contactdetail curcontactdetail = null;         // temp holder current text value in between opening , closing tags while parsing         string curtext = "";         try         {             //get pull parser             xmlpullparserfactory factory = xmlpullparserfactory.newinstance();             xmlpullparser parser = factory.newpullparser();             //get input file stream             fileinputstream fileinputstream = ctx.openfileinput("contactdetail.xml");             //to read file             bufferedreader reader = new bufferedreader(new inputstreamreader(fileinputstream));             //set file input xmlpullparser             parser.setinput(reader);             //get initial value of event             int eventtype = parser.geteventtype();             //start loop events until reach end of document              while(eventtype!=xmlpullparser.end_document)             {                 //get current tag                 string tagname=parser.getname();                 //handle diff eventtype                 switch (eventtype)                 {                     case xmlpullparser.start_tag:                         if (tagname.equalsignorecase(key_person))                         {                             //if new contact there <person> ....</person>                             curcontactdetail = new contactdetail();                         }                         break;                      case xmlpullparser.text:                         //grabs whole of data after starting tag use in end_tag                         curtext=parser.gettext();                         break;                      case xmlpullparser.end_tag:                         if(tagname.equalsignorecase(key_person))                         {                             //if </person> contact of 1 person fetched                             //add list of contacts                             contactdetails.add(curcontactdetail);                         }                         else if(tagname.equalsignorecase(key_name))                         {                             //if </name> occurs set contactdetails name contact person name                             curcontactdetail.setname(curtext);                         }                         else if(tagname.equalsignorecase(key_phone))                         {                             //if </phone> occurs                             curcontactdetail.setphone(long.parselong(curtext));                         }                         else if(tagname.equalsignorecase(key_email))                         {                             //if </email> occurs                             curcontactdetail.setemail(curtext);                         }                         else if(tagname.equalsignorecase(key_image_url))                         {                             //if </image-url> occurs                             curcontactdetail.setimage_url(curtext);                         }                         break;                      default:                         break;                 }              eventtype = parser.next();             }         }         catch (exception e){             e.printstacktrace();         }         return contactdetails;     } } 

downloader.java

package com.atechgeek.genesis.xmlpullparser;  import android.util.log;  import java.io.bufferedinputstream; import java.io.bufferedoutputstream; import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.net.url; import java.net.urlconnection;  /*  * helper class downloading file.  */ public class downloader {      //tag log statements     private static string mytag = "stacksites";      //handler msg represents posting progress update.     static final int post_progress = 1;      /************************************************      * download file internet , store locally      *       * @param url - url of file download      * @param fos - fileoutputstream save downloaded file to.      ************************************************/     public static void downloadfromurl(string url, fileoutputstream fos) {  //this downloader method         try {              url url = new url(url); //url of file              //keep start time can display how long took log.             long starttime = system.currenttimemillis();             log.d(mytag, "download begining");              /* open connection url. */             urlconnection ucon = url.openconnection();              // useful can show tipical 0-100% progress bar             //int lenghtoffile = ucon.getcontentlength();              log.i(mytag, "opened connection");              /************************************************              * define inputstreams read urlconnection.              ************************************************/             inputstream = ucon.getinputstream();             bufferedinputstream bis = new bufferedinputstream(is);             log.i(mytag, "got inputstream , bufferedinputstream");              /************************************************              * define outputstreams write our file.              ************************************************/              bufferedoutputstream bos = new bufferedoutputstream(fos);             log.i(mytag, "got fileoutputstream , bufferedoutputstream");              /************************************************              * start reading , writing our file.              ************************************************/             byte data[] = new byte[1024];             //long total = 0;             int count;             //loop , read current chunk             while ((count = bis.read(data)) != -1) {                                 //keep track of size progress.                 //total += count;                  //write chunk                 bos.write(data, 0, count);             }             //have call flush or  file can corrupted.             bos.flush();             bos.close();              log.d(mytag, "download ready in "                     + ((system.currenttimemillis() - starttime))                     + " milisec");         } catch (ioexception e) {             log.d(mytag, "error: " + e);         }     } } 

contactlistadapter.java

package com.atechgeek.genesis.xmlpullparser;  import android.content.context; import android.graphics.bitmap; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.arrayadapter; import android.widget.imageview; import android.widget.progressbar; import android.widget.relativelayout; import android.widget.textview;  import com.atechgeek.genesis.helperobj.contactdetail; import com.atechgeek.genesis.r; import com.nostra13.universalimageloader.core.displayimageoptions; import com.nostra13.universalimageloader.core.imageloader; import com.nostra13.universalimageloader.core.imageloaderconfiguration; import com.nostra13.universalimageloader.core.assist.failreason; import com.nostra13.universalimageloader.core.assist.imageloadinglistener;  import java.util.list;  /**  * created acer on 7/27/2017.  */  public class contactlistadapter extends arrayadapter<contactdetail> {     imageloader imageloader;     displayimageoptions options;      public contactlistadapter(context context, int resource, list<contactdetail> objects) {         super(context, resource, objects);          //setup imageloader, we'll use display our images         imageloaderconfiguration config = new imageloaderconfiguration.builder(context).build();         imageloader = imageloader.getinstance();         imageloader.init(config);          //setup options imageloader handle caching us.         options = new displayimageoptions.builder()                 .cacheinmemory()                 .cacheondisc()                 .build();     }       @override     public view getview(int position, view convertview, viewgroup parent)     {         relativelayout row = (relativelayout)convertview;         if(null==row)         {             //no recycled view.....create 1             layoutinflater inflater = (layoutinflater)parent.getcontext().getsystemservice(context.layout_inflater_service);             row=(relativelayout)inflater.inflate(r.layout.row_site, null);         }         //get our view references         final imageview iconimg = (imageview)row.findviewbyid(r.id.iconimg);         textview txtname = (textview)row.findviewbyid(r.id.txtname);         textview txtphoneno = (textview)row.findviewbyid(r.id.txtphone);         textview txtemail = (textview)row.findviewbyid(r.id.txtemail);         final progressbar indicator = (progressbar)row.findviewbyid(r.id.progress);          //initially want progress indicator visible, , image invisible         indicator.setvisibility(view.visible);         iconimg.setvisibility(view.invisible);          //setup listener can use swtich loading indicator image once it's ready         imageloadinglistener listener = new imageloadinglistener()         {              @override             public void onloadingstarted(string s, view view) {              }              @override             public void onloadingfailed(string s, view view, failreason failreason) {              }              @override             public void onloadingcomplete(string s, view view, bitmap bitmap) {                 indicator.setvisibility(view.invisible);                 iconimg.setvisibility(view.visible);             }              @override             public void onloadingcancelled(string s, view view) {              }         };          //load image , use our options caching handled.         imageloader.displayimage(getitem(position).getimage_url(), iconimg,options, listener);          //set value of textviews         txtname.settext(getitem(position).getname());         txtphoneno.settext(string.valueof(getitem(position).getphone()));         txtemail.settext(getitem(position).getemail());          return row;     } } 

contact detail.java

package com.atechgeek.genesis.helperobj;  /**  * created anshul thakur on 7/27/2017.  */  public class contactdetail {     private string name;     private string email;     private string image_url;     private long phone;     public void setname(string name)     {         this.name = name;     }     public string getname()     {         return name;     }     public string getemail() {         return email;     }      public string getimage_url() {         return image_url;     }      public long getphone() {         return phone;     }     public void setemail(string email) {         this.email = email;     }      public void setimage_url(string image_url) {         this.image_url = image_url;     }      public void setphone(long phone) {         this.phone = phone;     } } 

now main activity contacts.java

package com.atechgeek.genesis;  import android.content.context; import android.content.intent; import android.net.connectivitymanager; import android.net.networkinfo; import android.net.uri; import android.os.asynctask; import android.support.v7.app.appcompatactivity; import android.os.bundle;  import android.view.view; import android.widget.adapterview; import android.widget.listview; import android.widget.progressbar;  import com.atechgeek.genesis.xmlpullparser.sitesxmlpullparser; import com.atechgeek.genesis.xmlpullparser.downloader; import com.atechgeek.genesis.xmlpullparser.contactlistadapter;  import java.io.filenotfoundexception;  public class contacts extends appcompatactivity {     private listview contactlist;     private contactlistadapter madapter;     private static progressbar bar;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_contacts);         //to add button         getsupportactionbar().setdisplayhomeasupenabled(true);          contactlist = (listview)findviewbyid(r.id.contactpersonlist);         bar = (progressbar)findviewbyid(r.id.progressbar);         bar.setvisibility(view.visible);         contactlist.setonitemclicklistener(new adapterview.onitemclicklistener() {             @override             public void onitemclick(adapterview<?> parent, view view, int position, long id) {                 long phonenumber = madapter.getitem(position).getphone();                 intent intent = new intent(intent.action_dial, uri.parse("tel:(+91)"+phonenumber));                 startactivity(intent);             }         });          /*          * if network available download xml internet.          * if not try use local file last time.          */         if(isnetworkavailable())         {             contactfiledownload download = new contactfiledownload();             download.execute();         }         else         {             madapter = new contactlistadapter(getapplicationcontext(), -1, sitesxmlpullparser.getcontactdetailfromfile(contacts.this));             contactlist.setadapter(madapter);         }     }      private boolean isnetworkavailable() {         connectivitymanager connectivitymanager = (connectivitymanager)getsystemservice(context.connectivity_service);         networkinfo activenetworkinfo = connectivitymanager.getactivenetworkinfo();         return activenetworkinfo != null && activenetworkinfo.isconnected();     }     private class contactfiledownload extends asynctask<void, void, void>     {         @override         protected void doinbackground(void... params) {             //download file             try {                 downloader.downloadfromurl("https://anshulthakur939.000webhostapp.com/wp-admin/genesis_app_data/contactdetail.xml", openfileoutput("contactdetail.xml", context.mode_private));             } catch (filenotfoundexception e) {                 e.printstacktrace();             }             return null;         }         @override         protected void onpostexecute(void result) {             //setup our adapter , set listview.             madapter = new contactlistadapter(contacts.this, -1, sitesxmlpullparser.getcontactdetailfromfile(contacts.this));             contactlist.setadapter(madapter);             bar.setvisibility(view.invisible);         }     }  } 

its xml activity_contacts.xml

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".contacts" > <progressbar     android:id="@+id/progressbar"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_centerhorizontal="true"     android:layout_centervertical="true"     android:visibility="gone"     /> <listview     android:id="@+id/contactpersonlist"     android:layout_width="match_parent"     android:layout_height="match_parent" />  </relativelayout> 

and row_site.xml

<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:padding="10dp" >      <progressbar         android:id="@+id/progress"         android:layout_width="wrap_content"         android:layout_height="wrap_content" />      <imageview         android:id="@+id/iconimg"         android:layout_width="80dp"         android:layout_height="80dp"         android:layout_marginright="8dp" />      <textview         android:id="@+id/txtname"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_torightof="@id/iconimg"         android:textsize="16sp"         android:textstyle="bold" />      <textview         android:id="@+id/txtphone"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_torightof="@id/iconimg"         android:textsize="12sp"         android:layout_below="@id/txtname"         />     <textview         android:id="@+id/txtemail"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_torightof="@id/iconimg"         android:textsize="12sp"         android:layout_below="@id/txtphone"         />  </relativelayout> 

androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.atechgeek.genesis">      <uses-permission android:name="android.permission.internet" />     <uses-permission android:name="android.permission.access_network_state" />      <application         android:allowbackup="true"         android:hardwareaccelerated="true"         android:icon="@drawable/genesis"         android:label="@string/app_name"         android:largeheap="true"         android:supportsrtl="true"         android:theme="@style/apptheme">         <activity             android:name=".splashactivity"             android:hardwareaccelerated="false"             android:screenorientation="portrait"             android:theme="@style/activitytheme">             <intent-filter>                 <action android:name="android.intent.action.main" />                  <category android:name="android.intent.category.launcher" />             </intent-filter>         </activity>         <activity android:name=".home" />         <activity             android:name=".welcomeactivity"             android:screenorientation="portrait"             android:theme="@style/activitytheme" />         <activity             android:name=".signinactivity"             android:hardwareaccelerated="false"             android:screenorientation="portrait"             android:theme="@style/activitytheme" />          <service android:name=".myfirebasemessaging">             <intent-filter>                 <action android:name="com.google.firebase.messaging_event" />             </intent-filter>         </service>          <meta-data             android:name="com.google.firebase.messaging.default_notification_icon"             android:resource="@drawable/genesis" />          <activity             android:name=".mynavdrawer"             android:label="@string/title_activity_my_nav_drawer"             android:screenorientation="portrait"             android:theme="@style/apptheme.noactionbar" />         <activity             android:name=".eventactivity"             android:label="@string/title_activity_event"             android:screenorientation="portrait"             android:theme="@style/apptheme.noactionbar" />         <activity             android:name=".eventdetailactivity"             android:label="@string/title_activity_event_detail"             android:screenorientation="portrait"             android:theme="@style/apptheme.noactionbar" />         <activity             android:name=".chatwindow"             android:hardwareaccelerated="false"             android:label="@string/chat_title"             android:parentactivityname=".mynavdrawer">             <meta-data                 android:name="android.support.parent_activity"                 android:value="com.atechgeek.genesis.mynavdrawer" />         </activity>         <activity             android:name=".contacts"             android:label="@string/contacts_title"             android:parentactivityname=".mynavdrawer">             <meta-data                 android:name="android.support.parent_activity"                 android:value="com.atechgeek.genesis.mynavdrawer" />         </activity>      </application>  </manifest> 

if create new project , add these files there works fine when put in project not able work,.... fetches data once , never fetches data server.... here screenshot of project hierarchy ... hierarchy of project


Comments

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -