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: listView に入力します

これがあなたの将来のプロジェクトに役立つことを願っています!

于 2012-12-05T00:09:10.343 に答える