{"id":1313,"date":"2022-08-30T15:15:29","date_gmt":"2022-08-30T15:15:29","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2013\/11\/10\/set-onclick-gettext-etc-for-created-views-collection-of-common-programming-errors\/"},"modified":"2022-08-30T15:15:29","modified_gmt":"2022-08-30T15:15:29","slug":"set-onclick-gettext-etc-for-created-views-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2022\/08\/30\/set-onclick-gettext-etc-for-created-views-collection-of-common-programming-errors\/","title":{"rendered":"set onClick, getText, etc for created views-Collection of common programming errors"},"content":{"rendered":"<p>This is a logic based problem where I will need a small sample of code or an idea supplied for an answer.<\/p>\n<p>I am creating a U.I. programmatically from a <code>JSON<\/code> response. This app will load in an unknown amount of questions and answers. I&#8217;m using loops and conditional statements to create the <code>Views<\/code> for the U.I. and I am using an <code>AsyncTask<\/code> for most of the heavy lifting.<\/p>\n<p>Well the problem I can&#8217;t seem to figure out is: How will I give an unknown amount of views <strong>unique<\/strong> id&#8217;s so that I can use them.<\/p>\n<p>I am providing all the <code>fragment<\/code> code so you know exactly whats going on:<\/p>\n<pre><code>public View onCreateView(LayoutInflater inflater, ViewGroup container,\n            Bundle savedInstanceState) {\n\n        view = inflater.inflate(R.layout.fragment_assessment, container, false);\n        ab = getActivity().getActionBar();\n        infoList = new ArrayList();\n        new Load().execute();\n\n        return view;\n    }\n\n    class Load extends AsyncTask {\n        private ProgressDialog pDialog;\n        JSONParser jParser = new JSONParser();\n        JSONArray questions = null;\n\n        protected void onPreExecute() {\n            super.onPreExecute();\n            pDialog = new ProgressDialog(getActivity());\n            pDialog.setMessage(\"Loading questions. Please wait...\");\n            pDialog.setIndeterminate(false);\n            pDialog.setCancelable(true);\n            pDialog.show();\n        }\n\n        protected String doInBackground(String... args) {\n\n            \/\/ getting JSON string from URL\n            String componentName = (String) ab.getSelectedTab().getText();\n            companyName = model.getcName();\n            projectName = model.getpName();\n            List nameValuePairs = new ArrayList(3);\n            nameValuePairs.add(new BasicNameValuePair(\"company\", companyName));\n            nameValuePairs.add(new BasicNameValuePair(\"project\", projectName));\n            nameValuePairs.add(new BasicNameValuePair(\"component\",\n                    componentName));\n\n            JSONObject json = jParser.makeHttpRequest(url, \"POST\",\n                    nameValuePairs);\n            \/\/ Check your log cat for JSON response\n            Log.d(\"All Questions: \", json.toString());\n            try {\n                \/\/ Checking for SUCCESS TAG\n                int success = json.getInt(TAG_SUCCESS);\n\n                if (success == 1) {\n                    Log.v(\"RESPONSE\", \"Success!\");\n                    \/\/ products found: getting Array of Questions\n                    questions = json.getJSONArray(TAG_QUESTIONS);\n\n                    \/\/ looping through All Questions\n                    for (int i = 0; i &lt; questions.length(); i++) {\n\n                        JSONObject c = questions.getJSONObject(i);\n\n                        \/\/ Storing each JSON item in variable\n                        String name = c.getString(TAG_NAME);\n                        String field = c.getString(TAG_FIELD);\n                        String value = c.getString(TAG_VALUE);\n\n                        \/\/ creating new HashMap\n                        HashMap map = new HashMap();\n\n                        \/\/ adding each child node to HashMap key =&gt; value\n                        map.put(TAG_NAME, name);\n                        map.put(TAG_FIELD, field);\n                        map.put(TAG_VALUE, value);\n\n                        infoList.add(map);\n                    }\n\n                } else {\n                    \/\/ no products found\n                    Log.v(\"ERROR\", \"No JSON for you!\");\n                }\n            } catch (JSONException e) {\n                e.printStackTrace();\n            }\n            return null;\n        }\n\n        protected void onPostExecute(String string) {\n            \/\/ dismiss the dialog\n            pDialog.dismiss();\n\n            for (int i = 0; i &lt; infoList.size(); i++) {\n                \/\/ get HashMap\n                HashMap map = infoList.get(i);\n                \/\/ if the answer should be a radio button, inflate it\n                if (map.get(TAG_FIELD).equals(r)) {\n                    Log.v(\"RESPONSE\", \"About to create a radio button\");\n                    \/\/ find\n                    LinearLayout content = (LinearLayout) view\n                            .findViewById(R.id.add);\n                    \/\/ create\n                    ArrayList value = new ArrayList();\n                    TextView tv = new TextView(getActivity());\n                    RadioGroup rg = new RadioGroup(getActivity());\n                    rg.setOrientation(RadioGroup.HORIZONTAL);\n                    RadioButton rb = new RadioButton(getActivity());\n                    RadioButton rb2 = new RadioButton(getActivity());\n                    LinearLayout ll = new LinearLayout(getActivity());\n                    \/\/ set\n                    rb.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.MATCH_PARENT,\n                            LinearLayout.LayoutParams.MATCH_PARENT));\n                    rb2.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.MATCH_PARENT,\n                            LinearLayout.LayoutParams.MATCH_PARENT));\n                    ll.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.MATCH_PARENT,\n                            LinearLayout.LayoutParams.MATCH_PARENT));\n                    String s = map.get(TAG_VALUE);\n                    for (String parts : s.split(\"\\r\\n\")) {\n                        value.add(parts);\n                    }\n                    rb.setText(value.get(0));\n                    rb2.setText(value.get(1));\n                    tv.setText(map.get(TAG_NAME));\n                    ll.setOrientation(LinearLayout.HORIZONTAL);                 \n                    \/\/ add\n                    rg.addView(rb);\n                    rg.addView(rb2);\n                    ll.addView(tv);\n                    ll.addView(rg);\n                    content.addView(ll);\n                }\n                \/\/ create an EditText field\n                else if (map.get(TAG_FIELD).equals(et)) {\n                    Log.v(\"RESPONSE\", \"About to create an EditText\");\n                    \/\/ find\n                    LinearLayout content = (LinearLayout) getActivity()\n                            .findViewById(R.id.add);\n                    \/\/ create\n                    TextView tv = new TextView(getActivity());\n                    EditText et = new EditText(getActivity());\n                    LinearLayout ll1 = new LinearLayout(getActivity());\n                    \/\/ set\n                    tv.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.WRAP_CONTENT,\n                            LinearLayout.LayoutParams.MATCH_PARENT));\n                    et.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.MATCH_PARENT,\n                            LinearLayout.LayoutParams.MATCH_PARENT));\n                    ll1.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.MATCH_PARENT,\n                            LinearLayout.LayoutParams.MATCH_PARENT));\n                    tv.setText(map.get(TAG_NAME));\n                    ll1.setOrientation(LinearLayout.HORIZONTAL);                    \n                    \/\/ add\n                    ll1.addView(tv);\n                    ll1.addView(et);\n                    content.addView(ll1);\n                }\n                \/\/ create CheckBox\n                else if (map.get(TAG_FIELD).equals(cb)) {\n                    Log.v(\"RESPONSE\", \"About to create a CheckBox\");\n                    \/\/ find\n                    LinearLayout content = (LinearLayout) getActivity()\n                            .findViewById(R.id.add);\n                    \/\/ create\n                    TextView tv = new TextView(getActivity());\n                    CheckBox cb = new CheckBox(getActivity());\n                    LinearLayout ll2 = new LinearLayout(getActivity());\n                    \/\/ set\n                    tv.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.WRAP_CONTENT,\n                            LinearLayout.LayoutParams.MATCH_PARENT));\n                    cb.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.WRAP_CONTENT,\n                            LinearLayout.LayoutParams.MATCH_PARENT));\n                    ll2.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.MATCH_PARENT,\n                            LinearLayout.LayoutParams.MATCH_PARENT));\n                    tv.setText(map.get(TAG_NAME));\n                    ll2.setOrientation(LinearLayout.HORIZONTAL);                    \n                    \/\/ add\n                    ll2.addView(tv);\n                    ll2.addView(cb);\n                    content.addView(ll2);\n\n                }\n                \/\/ Create Spinner\n                else if (map.get(TAG_FIELD).equals(dm)) {\n                    Log.v(\"RESPONSE\", \"About to create a Drop Down Menu\");\n                    \/\/ find\n                    LinearLayout content = (LinearLayout) getActivity()\n                            .findViewById(R.id.add);\n                    \/\/ create\n                    TextView tv = new TextView(getActivity());\n                    LinearLayout ll3 = new LinearLayout(getActivity());\n                    ArrayList spinnerArray = new ArrayList();\n                    ArrayAdapter aa = new ArrayAdapter(\n                            getActivity(),\n                            android.R.layout.simple_spinner_dropdown_item,\n                            spinnerArray);\n                    Spinner spinner = new Spinner(getActivity());\n                    \/\/ set\n                    tv.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.WRAP_CONTENT,\n                            LinearLayout.LayoutParams.WRAP_CONTENT));\n                    spinner.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.WRAP_CONTENT,\n                            LinearLayout.LayoutParams.WRAP_CONTENT));\n                    ll3.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.MATCH_PARENT,\n                            LinearLayout.LayoutParams.MATCH_PARENT));\n                    tv.setText(map.get(TAG_NAME));\n                    String s = map.get(TAG_VALUE);\n                    for (String parts : s.split(\"\\r\\n\")) {\n                        spinnerArray.add(parts);\n                        System.out.println(parts);\n                    }\n                    spinner.setAdapter(aa);\n                    ll3.setOrientation(LinearLayout.HORIZONTAL);                    \n                    \/\/ add\n                    ll3.addView(tv);\n                    ll3.addView(spinner);\n                    content.addView(ll3);\n                } else if (map.get(TAG_FIELD).equals(fu)) {\n                    Log.v(\"RESPONSE\", \"About to create an ImageView\");\n                    \/\/ find\n                    LinearLayout content = (LinearLayout) getActivity()\n                            .findViewById(R.id.add);\n                    \/\/ create\n                    TextView tv = new TextView(getActivity());\n                    LinearLayout ll4 = new LinearLayout(getActivity());\n                    ImageButton ib = new ImageButton(getActivity());\n                    int ibd = 0;\n                    ibd = R.drawable.ic_menu_camera;\n                    \/\/ set\n                    tv.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.WRAP_CONTENT,\n                            LinearLayout.LayoutParams.WRAP_CONTENT));\n                    ll4.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.WRAP_CONTENT,\n                            LinearLayout.LayoutParams.WRAP_CONTENT));\n                    ib.setLayoutParams(new LinearLayout.LayoutParams(\n                            LinearLayout.LayoutParams.WRAP_CONTENT,\n                            LinearLayout.LayoutParams.WRAP_CONTENT));\n                    tv.setText(map.get(TAG_NAME));\n                    ib.setImageResource(ibd);\n                    ll4.setOrientation(LinearLayout.HORIZONTAL);                    \n                    \/\/add\n                    ll4.addView(tv);\n                    ll4.addView(ib);\n                    content.addView(ll4);\n                }\n            }\n        }\n    };\n<\/code><\/pre>\n<p>I probably went about this the wrong way to begin with, however this is where I&#8217;m at. I will need to give the <code>EditText<\/code> an id to grab user input, I will need to give the <code>ImageButton<\/code> and id so it can perform events with the <code>onClick<\/code> function, and so on and so forth. You get the point I&#8217;m sure. So how would one of you tackle this problem?<\/p>\n<ol>\n<li>\n<p>It&#8217;s really hard to answer this question. It really depends on what you want to do with the captured data. In any case, you don&#8217;t have to generated IDs for the elements, you can set new event listeners using Anonymous classes. Then, each of these listeners can save your data to <em>somewhere<\/em> depending on your key (name?).<\/p>\n<\/li>\n<\/ol>\n<p id=\"rop\"><small>Originally posted 2013-11-10 00:16:11. <\/small><\/p>","protected":false},"excerpt":{"rendered":"<p>This is a logic based problem where I will need a small sample of code or an idea supplied for an answer. I am creating a U.I. programmatically from a JSON response. This app will load in an unknown amount of questions and answers. I&#8217;m using loops and conditional statements to create the Views for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1313","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/1313","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=1313"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/1313\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=1313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=1313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=1313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}