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
Post a Comment