如何在没有列表的情况下将int json解析为textview

时间:2018-05-17 03:55:56

标签: android json

我正在使用xml解析json in text to textview但是不知道如何。

这是json

{
   "sys":
   {
      "sunrise":1381107633,
      "sunset":1381149604
   }
}

我正在调用textview并将其更改为int但仍然无效。

TextView asetBaik = (TextView) findViewById(R.id.asetangka);

这就是我如何调用json

@Override
        protected String doInBackground(String... params) {
            String link_url = "https://example.com/api/sun";
            JSONParser jParser = new JSONParser();
            JSONObject json = jParser.AmbilJson(link_url);

                try {
                    JSONObject data = json.getJSONObject("sys");

                    baik = Integer.parseInt(asetBaik.getText().toString());
                    baik = data.getInt("sunrise");
                    asetBaik.setText(baik);

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            pDialog.dismiss();
        }

    }

请帮助我如何获取int值json并将其带入Sting TextView

4 个答案:

答案 0 :(得分:1)

我希望这对你有用。

 try {

         JSONObject jsonObject1= json.getJSONObject("sys");
         int sunrise = jsonObject1.getInt("sunrise");
         int sunset = jsonObject1.getInt("sunset");
         Log.e("sunrise", "" + sunrise);
         Log.e("sunset", "" + sunset);

       } catch (Exception e) {

   }

您正在使用asynctask,您需要使用处理程序来更新主线程上的UI

答案 1 :(得分:1)

您正在更新不同线程(而不是UI线程)中的文本视图。 您可以通过两种方式更新视图:

  1. 通过在ui线程上运行来更新文本视图。 ref- https://developer.android.com/reference/android/app/Activity#runonuithread
  2. 您可以在doInBackground中返回结果并更新onPostExecute中的文本视图

答案 2 :(得分:1)

只有一个Thread运行,它是UI主线程,并且它不允许从线程进程更新UI。

因此,如果您想在TextView方法中设置doInBackground(),请在runOnUiThread方法中执行UI更新操作。

runOnUiThread(new Runnable() {
               @Override
               public void run() {
                   try {
                    JSONObject data = json.getJSONObject("sys");

                    baik = Integer.parseInt(asetBaik.getText().toString());
                    baik = data.getInt("sunrise");
                    asetBaik.setText(baik);

                } catch (JSONException e) {
                    e.printStackTrace();
                }     
               }
            });

希望它能帮到你!!

答案 3 :(得分:0)

替换此代码

baik = Integer.parseInt(asetBaik.getText().toString());
baik = data.getInt("sunrise");
asetBaik.setText(baik);

baik = data.getInt("sunrise");
asetBaik.setText(String.valueOf(baik));

希望这会起作用