2

我的项目是从服务器获取 json 数据并在运行代码时显示在列表视图中我的代码不起作用:

public void onCreate(Bundle savedInstanceState)
{

    super.onCreate(savedInstanceState);

    setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, this.datadrinks()));

}
public ArrayList<String> datadrinks()
{
    ArrayList<String> listItems = new ArrayList<String>();
    try {
        URL twitter = new URL("http://10.0.2.2:50667/expression%20web4/GetAllDrinkItems.ashx");
        URLConnection tc = twitter.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(
                tc.getInputStream()));

        String line;
        while ((line = in.readLine()) != null) {
            JSONObject ja = new JSONObject(line);
            JSONArray jobj=ja.getJSONArray("lstDrinkItems");

        for (int i = 0; i < jobj.length(); i++) {
            JSONObject jo = jobj.getJSONObject(i);
            listItems.add(jo.getString("Name"));
        } 
        }
    }catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return listItems;

    }
}
4

1 回答 1

0

我在您的代码中找不到明显的错误。

但是你在设计上有一个很大的问题。您正在 UI 线程上发出服务器请求。你不应该那样做。在较新版本的 Android 上,您甚至不允许这样做。

您应该改用专门的类,例如AsyncTask

  • doInBackground:发出请求并解析响应
  • onPostExecute:填充列表视图

希望这对您未来的项目有所帮助!

于 2012-12-05T00:09:10.343 回答