0

我想从 JSON 中获取 Title 字符串。我得到了值(使用 Debugger 检查)但是在微调器错误中的下拉列表中列出时

 04-03 13:25:07.528: E/AndroidRuntime(663):
 java.lang.IllegalStateException: ArrayAdapter requires the resource ID
 to be a TextView 04-03 13:25:07.528: E/AndroidRuntime(663):at
 android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:347)

 04-03 13:25:07.528: E/AndroidRuntime(663):     at
 android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)

等等......我需要一个完美的解决方案来解决这个问题............

class coursesJson extends AsyncTask<String, Void, String> {

        protected void onPostExecute(String coursesJSON) {

            coursesArray=new JSONArray();
            try {

                coursesArray = new JSONArray(coursesJSON);

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            for (int i = 0; i < coursesArray.length(); i++) {

            try {
                String title = coursesArray.getJSONObject(i).getString(
                        "Title");
                ArrayList<String> Title = new ArrayList<String>();
                Title.add(title);

                Log.d("Title",title);

                 ArrayAdapter<String> coursesAdapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.registeration,Title);
                  coursesAdapter.setDropDownViewResource(android.R.layout.activity_list_item);
                  spinner.setSelection(Title.indexOf(title));
                  spinner.setAdapter(coursesAdapter);
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        }
    }

        public String getStringContent(String uri) throws Exception {

        try {
            HttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet();
            request.setURI(new URI(uri));
            HttpResponse response = client.execute(request);
            InputStream ips = response.getEntity().getContent();
            BufferedReader buf = new BufferedReader(new InputStreamReader(ips,
                    "UTF-8"));

            StringBuilder sb = new StringBuilder();
            String s;
            while (true) {
                s = buf.readLine();
                if (s == null || s.length() == 0)
                    break;
                sb.append(s);

            }
            buf.close();
            ips.close();
            return sb.toString();

        } finally {
            // any cleanup code...
        }
    }
4

2 回答 2

0

尝试使用这个:

ArrayAdapter<String> coursesAdapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_dropdown_item, Title);
spinner.setAdapter(coursesAdapter);
于 2013-04-03T08:48:03.950 回答
0

正如错误所说,您正在尝试使用错误的资源 ID。例如使用

android.R.layout.simple_spinner_dropdown_item

代替

android.R.layout.activity_list_item

coursesAdapter.setDropDownViewResource(android.R.layout.activity_list_item);
于 2013-04-03T08:20:59.167 回答