java - Access to a TextView in Activity from Listview Adapter in android -


i have activity listview , textviews below,

i want call settext() method of textviews in onclicklistener in fill() method of adapter. don't access these textviews ...!

how can this?

activitymoshtari.class:

public class activitymoshtari extends activity {  public arraylist<structmoshtariitem>    moshtariitems   = new arraylist<structmoshtariitem>(); public arrayadapter                     adaptermoshtari; listview                                lstmoshtari; textview                                txtinfomoshtariname; textview                                txtinfomoshtaritel; textview                                txtinfomoshtarimob;   @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_moshtari);     txtinfomoshtariname= (textview) findviewbyid(r.id.txtinfomoshtariname);     txtinfomoshtarimob = (textview) findviewbyid(r.id.txtinfomoshtarimob);     txtinfomoshtaritel = (textview) findviewbyid(r.id.txtinfomoshtaritel);      lstmoshtari = (listview) findviewbyid(r.id.lstmoshtari);     adaptermoshtari = new adaptermoshtariitem(moshtariitems);     lstmoshtari.setadapter(adaptermoshtari);      (int = 0; < 10; i++) {         structmoshtariitem moshtariitem = new structmoshtariitem();         moshtariitem.id = "" + i;         moshtariitem.name = "some name" + i;         moshtariitem.tel = "sometel" + i;          moshtariitems.add(moshtariitem);     }         adaptermoshtari.notifydatasetchanged(); }} 

activity_moshtari.xml:

<?xml version="1.0" encoding="utf-8"?><linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" >  <linearlayout     android:layout_width="0dp"     android:layout_height="match_parent"     android:layout_weight="1"     android:orientation="vertical" >      <listview         android:id="@+id/lstmoshtari"         android:layout_width="match_parent"         android:layout_height="0dp"         android:layout_weight="1"          >     </listview> </linearlayout>  <linearlayout     android:id="@+id/layinfomoshtari"     android:layout_width="0dp"     android:layout_height="match_parent"     android:layout_weight="1"     android:orientation="vertical" >      <textview         android:id="@+id/txtinfomoshtaritel"         android:layout_width="fill_parent"         android:layout_height="fill_parent"         android:layout_weight="1"         android:textcolor="#000"         android:textsize="26sp" />      <textview         android:id="@+id/txtinfomoshtarimob"         android:layout_width="fill_parent"         android:layout_height="fill_parent"         android:layout_weight="1"         android:textcolor="#000"         android:textsize="26sp" />      <textview         android:id="@+id/txtinfomoshtariname"         android:layout_width="fill_parent"         android:layout_height="fill_parent"         android:layout_weight="1"         android:textcolor="#000"         android:textsize="26sp" /> </linearlayout> 

and have adapter listview:

adaptermoshtariitem.class

public class adaptermoshtariitem extends arrayadapter<structmoshtariitem> {  public adaptermoshtariitem(arraylist<structmoshtariitem> array) {     super(g.context, r.layout.moshtari_item, array); }   private static class viewholder {      public viewgroup    layoutroot;     public textview     txtmoshtariid;     public textview     txtmoshtariname;     public textview     txtmoshtaritel;     public imageview    imgmoshtarirecordview;      public viewholder(view view) {         layoutroot = (viewgroup) view.findviewbyid(r.id.layoutroot);         txtmoshtariid = (textview) view.findviewbyid(r.id.txtmoshtariid);         txtmoshtariname = (textview) view.findviewbyid(r.id.txtmoshtariname);         txtmoshtaritel = (textview) view.findviewbyid(r.id.txtmoshtaritel);         imgmoshtarirecordview = (imageview) view.findviewbyid(r.id.imgmoshtarirecordview);     }      public void fill(final arrayadapter<structmoshtariitem> adapter, final structmoshtariitem item, final int position) {         txtmoshtariid.settext(item.id);         txtmoshtariname.settext(item.name);         txtmoshtaritel.settext(item.tel);          layoutroot.setonclicklistener(new onclicklistener() {              @override             public void onclick(view arg0) {               }         });      } }   @override public view getview(int position, view convertview, viewgroup parent) {     viewholder holder;      structmoshtariitem item = getitem(position);     if (convertview == null) {         convertview = g.inflater.inflate(r.layout.moshtari_item, parent, false);         holder = new viewholder(convertview);         convertview.settag(holder);     } else {         holder = (viewholder) convertview.gettag();     }      holder.fill(this, item, position);     return convertview; } 

}

you can pass view adapter can able update when ever needed. need add 3 textview params in adapter constructor. changes in adapter declare textview variables in adapter class

textview name,tel,mob;  public adaptermoshtariitem(arraylist<structmoshtariitem> array,textview txtinfomoshtariname,textview txtinfomoshtaritel                                     ,textview txtinfomoshtarimob) { super(g.context, r.layout.moshtari_item, array); this.name=txtinfomoshtariname; this.tel=txtinfomoshtaritel; this.mob=txtinfomoshtarimob; } 

and change fill data function

public void fill(final arrayadapter<structmoshtariitem> adapter, final structmoshtariitem item, final int position) {         name.settext(item.id);         tel.settext(item.name);         mob.settext(item.tel);          layoutroot.setonclicklistener(new onclicklistener() {              @override             public void onclick(view arg0) {               }         });      } 

finally pass textviews in adapter class file.

 adaptermoshtari = new adaptermoshtariitem(moshtariitems,txtmoshtariname,txtinfomoshtaritel,txtinfomoshtarimob);  lstmoshtari.setadapter(adaptermoshtari); 

Comments