在textview上安装Android打印json数组

时间:2015-09-07 09:52:55

标签: java android json

我有一个Android应用程序应该解析来自Web服务的json数组输出 我用java应用程序测试了输出,它工作正常。 我的目的是在textview中输出一个输出但是我失败了

类JsonReader

public class JsonReader 
{
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
         while ((cp = rd.read()) != -1)
         {
         sb.append((char) cp);
                              }
          return sb.toString();
                                      }

      public static JSONArray readJsonFromUrl(String url) throws IOException, JSONException
      {
       InputStream is = new URL(url).openStream();
       try 
       {
       BufferedReader rd = new BufferedReader(new InputStreamReader(is,  Charset.forName("UTF-8")));
       String jsonText = readAll(rd);
        JSONArray json = new JSONArray(jsonText);
        return json;
        }
        finally 
        {
          is.close();
        }
           }

      public JsonReader() throws JSONException, IOException
      {

      }  

      }

MainActivity

  public class MainActivity extends Activity {

  @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
final TextView uid = (TextView)findViewById(R.id.editText1);
    try
    {
    JsonReader r = new JsonReader();
    JSONArray json = r.readJsonFromUrl ("http://localhost:8888/derdeery/zaki.php");

 for (int i =1; i < json.length(); ++i)
 {
 JSONObject  jsons =json.getJSONObject(i);

 int service_ID = jsons.getInt("service_ID");
 String Site_comment = jsons.getString("site_comment");
 String Img_Link = jsons.getString("img_link"); 
 uid.setText(Site_comment);

}

    }
catch(Exception e)
       { }}}

我的xml文件

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="60dp"
    android:ems="10" />

2 个答案:

答案 0 :(得分:1)

需要进行以下更改才能使其正常工作:

1。 editText1EditText而不是TextView。所以在xml文件中使用的代码中使用相同的视图:

final EditText uid = (EditText)findViewById(R.id.editText1);

2。目前在UI线程上进行网络操作(API调用),如果网络操作(API调用)需要更多时间,将导致ANR对话或NetworkOnMainThreadException

使用AsyncTaskdoInBackground方法进行网络操作(API调用),onPostExecute使用doInBackground方法的结果更新用户界面。

答案 1 :(得分:0)

试试这个

JSONObject json = new JSONObject(jsonString);     JSONArray jArray = json.getJSONArray(&#34; list&#34;);

System.out.println("*****JARRAY*****" + jArray.length());

for(int i=0; i<jArray.length(); i++){
    JSONObject json_data = jArray.getJSONObject(i);

    Log.i("log_tag", "_id" + json_data.getInt("account") +
        ", mall_name" + json_data.getString("name") +
        ", location" + json_data.getString("number") +
        ", telephone" + json_data.getString("url") +
        ",----" + json_data.getString("balance") +
        ",----" + json_data.getString("credit") +
        ",----" + json_data.getString("displayName")
    );
}