android - How to set data to custom row TextView in ListView -


i want show data server, in custom listview

this row_category.xml custom row

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="horizontal" >      <imageview         android:id="@+id/imageview1"         android:layout_width="80dp"         android:layout_height="80dp"         android:layout_marginleft="10dp"         android:layout_margintop="5dp"         android:src="@drawable/messenger_bubble_large_blue" />      <linearlayout         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:orientation="vertical"         android:layout_marginleft="10dp" >          <textview             android:id="@+id/txttitle"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:textcolor="#ffffff"             android:text="large text"             android:textappearance="?android:attr/textappearancelarge" />      </linearlayout>  </linearlayout> 

my categoryadapter.java

public class categoryadapter extends arrayadapter{     private layoutinflater inflater;      public categoryadapter(activity activity, arraylist<category> items){         super(activity, r.layout.row_category, items);         inflater = activity.getwindow().getlayoutinflater();     }      @override     public view getview(int position, view convertview, viewgroup parent){         return inflater.inflate(r.layout.row_category, parent, false);     } } 

my category.java class

public class category {     private string name,url;      public string getname() {         return name;     }      public void setname(string name) {         this.name = name;     }      public string geturl() {         return url;     }      public void seturl(string url) {         this.url = url;     } } 

and mainactivity listview

private listview categorylist;     private categoryadapter categoryitemadapter;     private intent intent;     jsonarray jarray;     arraylist<category> list;     string uri="http://demopurpose.com/quiz/api/";     inputstream is;     jsonobject json_data;     int len;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_categories);           list = new arraylist<category>();          categoryitemadapter = new categoryadapter(this, list);          getdata();          setlistadapter(categoryitemadapter);          categoryitemadapter.notifydatasetchanged();     }     public void getdata(){         thread t = new thread() {             public void run() {                 getdeals();             }             };         t.start();      }      public void getdeals() {          string result = "";          try{                 httpclient httpclient = new defaulthttpclient();                 httppost httppost = new httppost(uri+"getcategories.php");                 httpresponse response = httpclient.execute(httppost);                 httpentity entity = response.getentity();                 = entity.getcontent();         }         catch(exception e){                 log.e("log_tag", "error in http connection "+e.tostring());         }         //convert response string         try{                 bufferedreader reader = new bufferedreader(new inputstreamreader(is,"iso-8859-1"),8);                 stringbuilder sb = new stringbuilder();                 string line = null;                 while ((line = reader.readline()) != null) {                         sb.append(line + "\n");                 }                 is.close();                  result=sb.tostring();                 log.i("result...",result);         }catch(exception e){                 log.e("log_tag", "error converting result "+e.tostring());         }          //parse json data         try{                 jarray = new jsonarray(result);                 //log.i("result", result);                 len=jarray.length();                           runonuithread(new runnable() {                             public void run() {                                 try{                                     category c = new category();                                      for(int i=0;i<jarray.length();i++){                                         json_data = jarray.getjsonobject(i);                                         c.setname(json_data.getstring("name"));                                         list.add(c);                                         categoryitemadapter.notifydatasetchanged();                                     }                                 }                                 catch(jsonexception je){                                     je.printstacktrace();                                 }                             }                         });          }         catch(jsonexception e){                 log.e("log_tag", "error parsing data "+e.tostring());         }    } 

it generating list 3 items response enter image description here now, how can change text of each listview row.

you'll need improve arrayadapter.

currently you're not setting data textview. try following, didn't test should work.

 public class categoryadapter extends arrayadapter {      private layoutinflater inflater;      public categoryadapter(activity activity, arraylist<category> items){         super(activity, r.layout.row_category, items);          inflater = activity.getwindow().getlayoutinflater();     }      @override     public view getview(int position, view convertview, viewgroup parent){          viewholder viewholder;          if (convertview == null) {              viewholder = new viewholder();              convertview = inflater.inflate(r.layout.row_category, parent, false);             viewholder.texttile = (textview) convertview.findviewbyid(r.id.txttitle);              convertview.settag(viewholder);         } else {             viewholder = (viewholder) convertview.gettag();         }          category category = (category) getitem(position);         viewholder.texttile.settext(category.getname());          return convertview;     }      public void refresh(arraylist<category> items) {         clear();         addall(items);         notifydatasetchanged();     }      private class viewholder {         public textview texttile;     } } 

change loop in getdeals method this

try {     category c = new category();      for(int i=0;i<jarray.length();i++){         json_data = jarray.getjsonobject(i);         c.setname(json_data.getstring("name"));         list.add(c);     }      categoryitemadapter.refresh(list); } catch(jsonexception je){     je.printstacktrace(); } 

note

you should consider using recyclerview. it's lot more powerful listview , give more control on animations of individual list items. can read on here if you'd like


Comments

Popular posts from this blog

powershell Start-Process exit code -1073741502 when used with Credential from a windows service environment -

twig - Using Twigbridge in a Laravel 5.1 Package -

c# - LINQ join Entities from HashSet's, Join vs Dictionary vs HashSet performance -