Android fragments and creating widgets dynamically -
this perhaps 1 of simpler problems on here, new android,so still having challenges.i downloading data mysql server using json.-a list of questions.each question created on own fragment depending on total number of questions.i display different widgets-edittext,radiobutton,spinner etc depending on specified question.
problem 1
my challenge that,i cannot seem text values entered into/selected these widgets.this works in different activities of application,but fragment class issues.
problem 2
i trying positions of each question,from can display next/back buttons appropriately.e.g if @ 1st que,hide button,if @ end,hide next , display done.something that.my current implementation works if don't press button view previous question.if do,then button done is't displayed when last item,but still shows 'next'
problem 3
i tried inserting checks input fields.e.g if user clicks next without entering anything,display toast , not move next item.but mine still goes next page,and displays toast msg "response required" kindly me see doing wrong in implementation.thanks
my relevant code below
**fragmentstatepageradapter class** public class pageradapter extends fragmentstatepageradapter { public sqlitedatabase db; public pageradapter adapter; question question; context context2; public pageradapter(context c, fragmentmanager fm) { super(fm); this.context2 = c; } @override public int getcount() { system.out.println("inside count"); return questions.size(); // number of pages displayed } @override public fragment getitem(int i) { log.i("at pageradapter", "yaaay!!at pager adapter"); fragment fragment = null; question que = questions.get(i); //questions arraylist has been populated question objects server. // pass value displayed in inflated view fragment = new fragmentradiobutton(context2, que); return fragment; } public charsequence getpagetitle(int position) { position++; string s = "question " + position;// setting title return s; } } the fragment class
public class fragmentradiobutton extends fragment { context context3; private question question; private radiobutton[] radiobutton; private relativelayout relativelayout1; static viewpager mviewpager = fragmentstatepageractivity.mviewpager; private textview question_txtview; private radiogroup radiogroup; private button btnnext; private spinner spinner; private ratingbar ratingbar; private button btnback; private edittext edittext; private button btndone; private textview countrating_txt; private relativelayout relativelayout2; private static final int radio_button = 1; private static final int m_spinner = 2; private static final int edit_text = 3; private static final int rating_bar = 4; public static arraylist<integer> num = new arraylist<integer>(); private list<radiogroup> allradiogroups = new arraylist<radiogroup>(); private list<spinner> allspinners = new arraylist<spinner>(); private list<edittext> alleds = new arraylist<edittext>(); list<ratingbar> allratingbars = new arraylist<ratingbar>(); public fragmentradiobutton() { } public fragmentradiobutton(context c, question que) { this.context3 = c; this.question = que; } //@suppresslint("newapi") @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { super.oncreate(savedinstancestate); view view = getactivity().getlayoutinflater().inflate( r.layout.fragment_radio_button, null); scrollview scrollview = (scrollview) view .findviewbyid(r.id.scrollviewradiobutton); relativelayout1 = (relativelayout) scrollview .findviewbyid(r.id.relativelayout1); relativelayout2 = (relativelayout) relativelayout1 .findviewbyid(r.id.relativelayout2); context3 = getactivity().getapplicationcontext(); try { question_txtview = (textview) relativelayout1 .findviewbyid(r.id.question_text_radio_button); question_txtview.settext(question.getdescription()); num.add(question.getquestionid()); if (question.getwidgetid() == radio_button) { radiogroup.setvisibility(view.visible); radiobutton = new radiobutton[question.getanswers().size()]; typeface font4 = typeface.createfromasset(getactivity() .getassets(), "fonts/enriqueta/enriqueta-regular.otf"); (int = 0; < question.getanswers().size(); i++) { radiobutton[i] = new radiobutton(context3); radiobutton[i].setlines(3); radiobutton[i].settext(question.getanswers().get(i) .getanswer_text()); radiobutton[i].settag(question.getanswers().get(i) .getanswer_id()); radiobutton[i].settextcolor(color.black); radiobutton[i].settypeface(font4); radiobutton[i].settextsize(30); radiogroup.addview(radiobutton[i]); radiogroup.isclickable(); } allradiogroups.add(radiogroup); } else if (question.getwidgetid() == m_spinner) { spinner.setvisibility(view.visible); list<string> list = new arraylist<string>(); (int b = 0; b < question.getanswers().size(); b++) { string data = question.getanswers().get(b).getanswer_text() .tostring(); spinner.settag(question.getanswers().get(b).getanswer_id()); list.add(data); } arrayadapter<string> dataadapter = new arrayadapter<string>( context3, r.layout.my_style, list) { public view getview(int position, view convertview, viewgroup parent) { view v = super.getview(position, convertview, parent); ((textview) v).settextsize(22); return v; } public view getdropdownview(int position, view convertview, viewgroup parent) { view v = super.getdropdownview(position, convertview, parent); ((textview) v).settextcolor(color.black); return v; } }; spinner.setadapter(dataadapter); allspinners.add(spinner); } else if (question.getwidgetid() == edit_text) { edittext.setvisibility(view.visible); alleds.add(edittext); } else if (question.getwidgetid() == rating_bar) { ratingbar.setvisibility(view.visible); countrating_txt.setvisibility(view.visible); ratingbar .setonratingbarchangelistener(new onratingbarchangelistener() { public void onratingchanged(ratingbar rating_bar, float rating, boolean fromuser) { rating = rating_bar.getrating(); countrating_txt.settext(string.valueof(rating) + "ratings"); } }); allratingbars.add(ratingbar); } // } } catch (exception e) { log.e("log error :", "could not write text views in radiobutton fragment"); } itemposition(); return view; } onclicklistener btnnextonclicklistener = new onclicklistener() { @override public void onclick(view v) { if (question.getwidgetid() == radio_button) { validatedradiogroup(); } else if (question.getwidgetid() == m_spinner) { validatedspinner(); } else if (question.getwidgetid() == edit_text) { validatededittext(); } else if (question.getwidgetid() == rating_bar) { validatedratingbar(); } mviewpager.setcurrentitem(getitem(+1), true); } }; onclicklistener btnbackonclicklistener = new onclicklistener() { @override public void onclick(view v) { mviewpager.setcurrentitem(getitem(-1), true); } }; onclicklistener btndoneonclicklistener = new onclicklistener() { @override public void onclick(view v) { int lastitem = question.getquestionids().size(); if (lastitem == question.getquestionids().size()) { if (question.getwidgetid() == radio_button) { radiotext(); } else if (question.getwidgetid() == m_spinner) { spinnertext(); } else if (question.getwidgetid() == edit_text) { edittext_value(); } else if (question.getwidgetid() == rating_bar) { ratingtext(); } intent = new intent(getactivity(), finishedsurvey.class); startactivity(a); } } }; } public void itemposition() { (int j = 0; j < num.size(); j++) { // int item = num.indexof(j); if (j == 0) { btnback.setvisibility(view.gone); btnnext.setvisibility(view.visible); btndone.setvisibility(view.gone); system.out.println("the first part"); } else if (!(j == 0 || (j == question.getquestionids().size() - 1))) { btnback.setvisibility(view.visible); btnnext.setvisibility(view.visible); btndone.setvisibility(view.gone); system.out.println("the second part"); } else { if (j == question.getquestionids().size() - 1) { btnnext.setvisibility(view.invisible); btndone.setvisibility(view.visible); system.out.println("the last part"); } } } }
Comments
Post a Comment