Sunday 15 April 2012

android - how to display a listview when clicked on the item of spinner using onitemselected listener? -



android - how to display a listview when clicked on the item of spinner using onitemselected listener? -

i have written programme displays spinner want display listview within same activity when select item of spinner , have written code custom adapter display items within listview , the listviews row has 6 textviews of info comes string-array defined within strings.xml file , need help

result_date.java has spinner , resources , dont know phone call within "onitemselected" method

public class result_date extends activity { imageview iv; string[] years = { "select year", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014" }; arrayadapter<string> adapter; listview lv; string[] name; string[] mobile; string[] gender; string[] age; string[] disease; string[] day; string[] month; string[] year; int[] images = { r.drawable.photo_bg, r.drawable.photo_bg, r.drawable.photo_bg, r.drawable.photo_bg, r.drawable.photo_bg, r.drawable.photo_bg, r.drawable.photo_bg, r.drawable.photo_bg }; spinner spinner; @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.result_list_year); spinner = (spinner) findviewbyid(r.id.btnshowyear); iv = (imageview) findviewbyid(r.id.imgbackreuslt); adapter = new arrayadapter<string>(getbasecontext(), r.layout.spinner_item, r.id.textview1, years) { @override //this method used hide default text "select year" repeats twice public view getdropdownview(int position, view convertview, viewgroup parent) { view v = null; if (position == 0) { textview tv = new textview(getcontext()); tv.setheight(0); tv.setvisibility(view.gone); v = tv; } else { v = super.getdropdownview(position, null, parent); } parent.setverticalscrollbarenabled(false); homecoming v; } }; adapter.setdropdownviewresource(r.layout.spinner_item); spinner.setadapter(adapter); resources res = getresources(); name = res.getstringarray(r.array.name); mobile = res.getstringarray(r.array.mobile); gender = res.getstringarray(r.array.gender); age = res.getstringarray(r.array.age); disease = res.getstringarray(r.array.diagnosisname); day = res.getstringarray(r.array.day_array); month = res.getstringarray(r.array.month_year); year = res.getstringarray(r.array.year_array); lv = (listview) findviewbyid(r.id.lstshowyear); myadapter adapter = new myadapter(getbasecontext(), name, mobile, gender, age, images, day, month, year, disease); lv.setadapter(adapter); spinner.setonitemselectedlistener(new onitemselectedlistener() { @override public void onitemselected(adapterview<?> parent, view view, int position, long id) { // todo auto-generated method stub } @override public void onnothingselected(adapterview<?> parent) { // todo auto-generated method stub } }); } public void onclick(view v) { super.onbackpressed(); finish(); }

my customadapter myadapter.java

public class myadapter extends arrayadapter<string> { context context; int[] images; string[] namearray; string[] mobilearray; string[] genderarray; string[] agearray; string[] diseasearray; string[] dayarray; string[] montharray; string[] yeararray; public myadapter(context c, string[] name, string[] mobile, string[] gender, string[] age, int[] img, string[] disease, string[] day, string[] month, string[] year) { super(c, r.layout.row_layout, r.id.textview1, name); // todo auto-generated constructor stub this.context = c; this.namearray = name; this.mobilearray = mobile; this.genderarray = gender; this.agearray = age; this.diseasearray = disease; this.dayarray = day; this.montharray = month; this.yeararray = year; } @override public view getview(int position, view convertview, viewgroup parent) { // todo auto-generated method stub listview lv; layoutinflater inflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); view row = inflater.inflate(r.layout.row_layout, parent, false); imageview image = (imageview) row.findviewbyid(r.id.imgview); textview text1 = (textview) row.findviewbyid(r.id.txtname); textview text2 = (textview) row.findviewbyid(r.id.txtmobile); textview text3 = (textview) row.findviewbyid(r.id.txtgender); textview text4 = (textview) row.findviewbyid(r.id.txtage); textview text5 = (textview) row.findviewbyid(r.id.txtdesease); textview text6 = (textview) row.findviewbyid(r.id.txtdate); lv = (listview) row.findviewbyid(r.id.listview1); image.setimageresource(images[position]); text1.settext(namearray[position]); text2.settext(mobilearray[position]); text3.settext(genderarray[position]); text4.settext(agearray[position]); text5.settext(diseasearray[position]); text6.settext(dayarray[position]); text6.settext(montharray[position]); text6.settext(yeararray[position]); homecoming row; }

}

do need write code defining resources obj till setting adapter within onitemselected method ?? suggestions welcomed

i'll next thing:

create method within listadapter named illustration "refreshlist" take parameter info selected spinner item need "get" info need fill list spinner's value selected. illustration if info alter list year function this:

public void refreshlist(string year) { //fill arrays info according year namearray = getresources().getstringarray(r.array.name); //do loas info need according year here //and refresh adapter this.notifydatasetchanged(); }

then in onitemselected phone call of spinner phone call function of listadapter adapter.refreshlist(years[position]) or that. it's thought there many ways this, point have function in adapters called notifydatasetchanged() load 1 time again list info in list/array of info handle within adapter. if spinner selected value alter list info should utilize refresh list when spinner value selected. hope helps

android android-listview

No comments:

Post a Comment