Java 从jsonbin.io获取Json数据的滞后问题

Java 从jsonbin.io获取Json数据的滞后问题,java,android,json,Java,Android,Json,我正在开发一个简单的游戏应用程序,因此我的UI有一个简单的例子,问题是当我使用Json web服务获取一个关卡时,第一次从中选择关卡时,图片和关卡编号不会显示,只有4个字可以工作,但图像和关卡编号都不会显示 注意:image URL变量为null(因为在我第一次打开第一级活动时发生了延迟),所以发生了错误(这就是为什么它显示ic_launcher而不是显示级别图片) 所以,我说问题是“滞后”,因为当我回到LevelList并单击level1时,图片和级别编号被提取出来,一切都变好了 如何使图像和

我正在开发一个简单的游戏应用程序,因此我的UI有一个简单的例子,问题是当我使用Json web服务获取一个关卡时,第一次从中选择关卡时,图片和关卡编号不会显示,只有4个字可以工作,但图像和关卡编号都不会显示

注意:image URL变量为null(因为在我第一次打开第一级活动时发生了延迟),所以发生了错误(这就是为什么它显示ic_launcher而不是显示级别图片)

所以,我说问题是“滞后”,因为当我回到
LevelList
并单击level1时,图片和级别编号被提取出来,一切都变好了

如何使图像和级别ID在我第一次打开活动时同时显示

注意:我使用jsonbin.io获取数据

下面是我的Json数据获取类:


import android.os.AsyncTask;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class FetchData extends AsyncTask<Void,Void,Void> {

    String update = "4";

    String data ="";

    String id;
    String img;
    String w1;
    String w2;
    String w3;
    String w4;


    @Override
    protected Void doInBackground(Void... voids) {
        try {
            URL url = new URL("https://api.jsonbin.io/b/5e42776dd18e4016617690ce/" + update);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line = "";
            while(line != null){
                line = bufferedReader.readLine();
                data = data + line;
            }

            JSONArray JA = new JSONArray(data);

//            for(int i = 0 ;i < JA.length(); i++) {

                JSONObject JO = (JSONObject) JA.get(1);

                        id = (String) JO.get("id");
                        img = (String) JO.get("img");
                        w1 = (String) JO.get("w1");
                        w2 = (String) JO.get("w2");
                        w3 = (String) JO.get("w3");
                        w4 = (String) JO.get("w4");

//            }

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

        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);

        int levelId = Integer.parseInt(id);
        levelId++;

        LevelActivity.levelID = String.valueOf(levelId);
        LevelActivity.imageURL = img;
        LevelActivity.button1Word = w1;
        LevelActivity.button2Word = w2;
        LevelActivity.button3Word = w3;
        LevelActivity.button4Word = w4;

    }


}

导入android.os.AsyncTask;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
公共类FetchData扩展异步任务{
字符串更新=“4”;
字符串数据=”;
字符串id;
字符串img;
字符串w1;
字符串w2;
字符串w3;
字符串w4;
@凌驾
受保护的空位背景(空位…空位){
试一试{
URL=新URL(“https://api.jsonbin.io/b/5e42776dd18e4016617690ce/“+更新);
HttpURLConnection HttpURLConnection=(HttpURLConnection)url.openConnection();
InputStream InputStream=httpURLConnection.getInputStream();
BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream));
字符串行=”;
while(行!=null){
line=bufferedReader.readLine();
数据=数据+行;
}
JSONArray JA=新JSONArray(数据);
//对于(int i=0;i
谢谢^-^

我只需要更新
onPostExecute
方法中的图像和级别文本视图编号,使其从第一次加载。 NIKHIL AGGARWAL的回答


您只是在onPostExecute()方法中更新image和levelID变量的值。获取数据后,您必须在活动中的视图中设置这些变量,即在onPostExecute()方法中,我已经在onCreate()方法中的LevelActivity中设置了这些变量。创建活动时,您已经设置了这些变量。在获取新数据时,必须再次设置变量。