0

私はこのチュートリアルに従いました。

これは からの私の最終的なコードですMainActivity.java:

@SuppressLint({ "NewApi", "NewApi" })
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Permission StrictMode
    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }

    // listView1
    final ListView lisView1 = (ListView)findViewById(R.id.listView1);   

    /** JSON return
     *  [{"MemberID":"1","Name":"Weerachai","Tel":"0819876107"},
     * {"MemberID":"2","Name":"Win","Tel":"021978032"},
     * {"MemberID":"3","Name":"Eak","Tel":"0876543210"}]
     */

    String url = "http://10.0.2.2/Json/getJSON2.php";

    try {

        JSONArray data = new JSONArray(getJSONUrl(url));

        final ArrayList<HashMap<String, String>> MyArrList = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map;

        for(int i = 0; i < data.length(); i++){
            JSONObject c = data.getJSONObject(i);

            map = new HashMap<String, String>();
            map.put("MemberID", c.getString("MemberID"));
            map.put("Name", c.getString("Name"));
            map.put("Tel", c.getString("Tel"));
            MyArrList.add(map);

        }


        SimpleAdapter sAdap;
        sAdap = new SimpleAdapter(MainActivity.this, MyArrList, R.layout.activity_column,
                new String[] {"MemberID", "Name", "Tel"}, new int[] {R.id.ColMemberID, R.id.ColName, R.id.ColTel});      
        lisView1.setAdapter(sAdap);

        final AlertDialog.Builder viewDetail = new AlertDialog.Builder(this);
        // OnClick Item
        lisView1.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> myAdapter, View myView,
                    int position, long mylng) {

                String sMemberID = MyArrList.get(position).get("MemberID")
                        .toString();
                String sName = MyArrList.get(position).get("Name")
                        .toString();
                String sTel = MyArrList.get(position).get("Tel")
                        .toString();

                //String sMemberID = ((TextView) myView.findViewById(R.id.ColMemberID)).getText().toString();
                // String sName = ((TextView) myView.findViewById(R.id.ColName)).getText().toString();
                // String sTel = ((TextView) myView.findViewById(R.id.ColTel)).getText().toString();

                viewDetail.setIcon(android.R.drawable.btn_star_big_on);
                viewDetail.setTitle("Member Detail");
                viewDetail.setMessage("MemberID : " + sMemberID + "\n"
                        + "Name : " + sName + "\n" + "Tel : " + sTel);
                viewDetail.setPositiveButton("OK",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                // TODO Auto-generated method stub
                                dialog.dismiss();
                            }
                        });
                viewDetail.show();

            }
        });


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

}


public String getJSONUrl(String url) {
    StringBuilder str = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet(url);
    try {
        HttpResponse response = client.execute(httpGet);
        StatusLine statusLine = response.getStatusLine();
        int statusCode = statusLine.getStatusCode();
        if (statusCode == 200) { // Download OK
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(content));
            String line;
            while ((line = reader.readLine()) != null) {
                str.append(line);
            }
        } else {
            Log.e("Log", "Failed to download result..");
        }
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return str.toString();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}
}

そして、テストするプログラムを実行しているときに、logcat が次の警告を見つけました。

シミュレーターの結果は、リストビューの空白の画面です。

まだ直し方がわからないのですが、どなたかご存知ないでしょうか?

4

2 に答える 2

2

I think response JSON with wrong format. That's why you get the Exception. Please check the response string before convert it into JSON.

于 2012-10-17T07:59:11.910 に答える
0

これをデバッガーで実行してデータの値を確認することもできますが、エラーが発生している可能性が高いため、おそらく次の行で: return str.toString(); getJSONUrl メソッドで、str の値を確認できます。

Web サーバーが検出したエラーはすべてエラー メッセージとして含まれますが、それがコードの原因である可能性があります。

于 2012-08-29T10:50:30.583 に答える