java - For 循环 JSONArray 导致崩溃

标签 java android

我正在尝试从 https://github.com/thiagobodruk/bible/blob/master/json/en_kjv.json 获取 JSONStrings并将它们显示给 ListView,但问题是,CPU 无法处理该进程并导致应用程序崩溃。

en_kjv.json 位于 AWS S3 中,我正在使用 Volley 获取内容。

Volley 代码:

StringRequest requestKJV = new StringRequest(url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                processDone(response, "Genesis");
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(MainActivity.this, "Something wen't wrong whilst loading KJV. Please make sure your WiFi/Cellular Data was connected.", Toast.LENGTH_LONG).show();
                ArrayList<String> listER = new ArrayList<>();
                ArrayAdapter<String> arrayAdapterER = new ArrayAdapter<>(MainActivity.this, R.layout.listview, R.id.items);
            }
        });

processDone();代码:

public void processDone(String mainStringJson, String name) {
        ArrayList<String> list= new ArrayList<>();
        ArrayAdapter<String> arrayAdapterLP = new ArrayAdapter<>(this, R.layout.listview, R.id.line, list);
        try {
            JSONArray jsonArray = new JSONArray("[" + mainStringJson + "]");
            for(int i=0; i < jsonArray.length(); i++) {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                if(jsonObject.getString("name").equals(name)) {
                    JSONArray chapterArrays = jsonObject.getJSONArray("chapters");
                    for(int iA=0; iA < chapterArrays.length(); iA++) {
                        JSONArray jsonArray1 = chapterArrays.getJSONArray(iA);
                        for(int iB=0; iB < jsonArray1.length(); iB++) {
                            arrayAdapterLP.add(jsonArray1.getString(iB));
                        }
                    }
                }
            }

        } catch (JSONException jsonE){
            Toast.makeText(this, "Something wen't wrong. " + jsonE , Toast.LENGTH_LONG).show();
        }
        lv.setAdapter(arrayAdapterLP);
    }

在 Logcat 中,我得到任务被取消,有时等待发送非键事件,因为触摸的窗口尚未完成处理 500.0 毫秒前传递给它的某些输入事件.

最佳答案

您是否尝试从 https://raw.githubusercontent.com/thiagobodruk/bible/master/json/en_kjv.json 获取 JSONStrings

并且您应该使用Retrofit2OkHttp而不是StringRequest

关于java - For 循环 JSONArray 导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58484460/

相关文章:

java - 间接 Hibernate/JPA 方法调用丢失事务

Android:为什么系统重启后警报通知停止

充当信标的 Android 设备

java - 在 Android 应用程序中使用 Maven 项目

java - 从 Google map 获取坐标并将其插入 PostgreSQL

java - 文件未上传到 s3 存储桶

java - 如果抛出异常,Spring 的 JdbcTemplate 是否关闭连接?

android - 如何知道 Android 智能手机的 MTU 大小

java - getNodeValue() 有问题吗?

java - 实现新闻提要的最佳方式 - 类似于天空新闻应用程序