android - How to get a spinner from listView programmatically -
i've created spinner programmatically , add listview's adapter. however, can't spinner listview.
//listview = (nestedlistview)findviewbyid(r.id.exlistview); create.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { spinner spinner; (int i=0; i<listview.getchildcount(); i++) { if (listview.getchildat(i) instanceof spinner){ spinner = (spinner) listview.getchildat(i); string selection = (string) spinner.getselecteditem(); log.e("spinner device", selection); } } } }); my adapter
public class explistadapter extends baseexpandablelistadapter { private arraylist<arraylist<string>> mgroups; private arraylist<deviceobject> deviceoblist; private arraylist<roomsuggestion> roobjlist; private context mcontext; public explistadapter (context context,arraylist<arraylist<string>> groups, arraylist<deviceobject> deviceoblist, arraylist<roomsuggestion> roobjlist){ mcontext = context; mgroups = groups; this.deviceoblist = deviceoblist; this.roobjlist = roobjlist; } @override public int getgroupcount() { return mgroups.size(); } @override public int getchildrencount(int groupposition) { return mgroups.get(groupposition).size(); } @override public object getgroup(int groupposition) { return mgroups.get(groupposition); } @override public object getchild(int groupposition, int childposition) { return mgroups.get(groupposition).get(childposition); } @override public long getgroupid(int groupposition) { return groupposition; } @override public long getchildid(int groupposition, int childposition) { return childposition; } @override public boolean hasstableids() { return true; } @override public view getgroupview(int groupposition, boolean isexpanded, view convertview, viewgroup parent) { if (convertview == null) { layoutinflater inflater = (layoutinflater) mcontext.getsystemservice(context.layout_inflater_service); convertview = inflater.inflate(r.layout.group_view, null); } if (isexpanded) { //Изменяем что-нибудь, если текущая group раскрыта } else { //Изменяем что-нибудь, если текущая group скрыта } typeface lightface = typeface.createfromasset(mcontext.getassets(), "font/gothamprolight.ttf"); textview textgroup = (textview) convertview.findviewbyid(r.id.textgroup); textgroup.settypeface(lightface); textgroup.settext("thereses gate 46"); return convertview; } @override public view getchildview(int groupposition, final int childposition, boolean islastchild, view convertview, viewgroup parent) { if (convertview == null) { layoutinflater inflater = (layoutinflater) mcontext.getsystemservice(context.layout_inflater_service); convertview = inflater.inflate(r.layout.child_view, null); } typeface mediumface = typeface.createfromasset(mcontext.getassets(), "font/gothampromedium.ttf"); textview textchild = (textview) convertview.findviewbyid(r.id.textchild); textchild.settypeface(mediumface); textchild.settext( mgroups.get(groupposition).get(childposition) ); relativelayout rl = (relativelayout) convertview.findviewbyid(r.id.bg_button_screen); if( !deviceoblist.get(childposition).getproduct_id().equals("0") ) { rl.setbackgroundcolor(color.parsecolor("#4fcc54")); } else { rl.setbackgroundcolor(color.parsecolor("#e5910d")); } view linearlayoutg = convertview.findviewbyid(r.id.container); linearlayout.layoutparams layoutparams = new linearlayout.layoutparams( linearlayout.layoutparams.match_parent, linearlayout.layoutparams.wrap_content); layoutparams.setmargins(10, 0, 10, 30); linearlayoutg.setlayoutparams(layoutparams); relativelayout spinneropen = (relativelayout) convertview.findviewbyid(r.id.spinneropen); view linearlayout = convertview.findviewbyid(r.id.spinnerl); imageview images = (imageview)convertview.findviewbyid(r.id.spinnerimage); images.getlayoutparams().width = 20; images.getlayoutparams().height = 20; images.setimageresource(r.drawable.spin_ok); arraylist<string> list = new arraylist<string>(); (int i=0; i<roobjlist.size(); i++) { list.add(roobjlist.get(i).getname() ); } final spinner spinner = new spinner(mcontext); // make sure have valid layout parameters. spinner.setlayoutparams(new linearlayout.layoutparams(linearlayout.layoutparams.match_parent, 100)); spinner.setbackgroundresource(r.drawable.bg_spinner); arrayadapter spinnerarrayadapter = new arrayadapter(mcontext, r.layout.spinner_item, list); spinner.setadapter(spinnerarrayadapter); // open spinner spinneropen.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { spinner.performclick(); } }); ((linearlayout) linearlayout).addview(spinner); spinner.setonitemselectedlistener(new adapterview.onitemselectedlistener() { @override public void onitemselected(adapterview<?> parent, view view, int position, long id) { log.e("selected", string.valueof(parent.getitematposition(position)) ); log.e("childposition", string.valueof(childposition)); } @override public void onnothingselected(adapterview<?> parent) { } }); return convertview; } @override public boolean ischildselectable(int groupposition, int childposition) { return true; } }
you can try following code:
//listview = (nestedlistview)findviewbyid(r.id.exlistview); create.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { for(int = 0; < listview.getadapter().getcount(); i++ ) { for(int = 0; < listview.getchildcount(); i++ ) { view _mainview = listview.getchildat(i); linearlayout _linearlayout = _mainview.findviewbyid(r.id.spinnerl); spinner spinner = (spinner) _linearlayout.getchildat(0); string selection = (string) spinner.getselecteditem(); log.e("spinner device", selection); } } } });
Comments
Post a Comment