【问题标题】:Android using JSON ObjectsAndroid 使用 JSON 对象
【发布时间】:2015-04-28 12:18:15
【问题描述】:

我正在尝试使用从 RESTApi 获得的各种对象填充 ListView。

为了测试连接和对象是否被实际接收,我调用了这个方法:

protected void onPostExecute(String result) {
        try {
            JSONArray users = new JSONArray(result);
            JSONObject user = users.getJSONObject(1);
            Toast.makeText(MainActivity.this, user.getString("name"), Toast.LENGTH_LONG).show();
            jsonList = users;
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

Toast 确实向我显示了当前对象的名称,但是每当我尝试填充我的 ListView 时,我都会收到 NullPointerException。

我创建了一个 TextView 来测试 JSON 是否真的存在,但在这里我得到另一个 NullPointerException:

textView.setText(user.getString("name"));

当 JSONObject 在 Toast 中正常工作时,为什么它在这里给我一个 NullPointer?

【问题讨论】:

  • 请发布您的 ListView 代码以及 logcat 输出
  • 解析 JSON 似乎不是问题。 XML 对象(ListView、TextView、..)是否正确初始化?
  • 把你的json例子和listview处理代码
  • 现在我说的是 TextView 而不是 ListView (JSON: [{"name":"Christian Haase","_id":"54eda37aa4e01feebaf9c66a","__v":0},{"name":"Line Mungaard","_id":"54edde9ba4e01feebaf9c66b","__v":0}])
  • 您确定您的textView(或就此而言也是特定的ListView 对象)在那个时候为空吗?如果您将 setText 方法放在 Toast 显示有效值的同一位置,这似乎是最明显的事情。 (唯一想到的另一件事是您的 json 结果可能会不时变化,因此有时工作有时不工作。)

标签: android arrays listview textview


【解决方案1】:

使用 getter 和 setter 创建一个 Bean 类,然后用 JSON 数据填充 Bean 并将其用作 listView 适配器的数据源!

【讨论】:

    【解决方案2】:

    就您的代码而言
    您正在访问用户对象的第一个元素
    您还必须指定列表视图的第一个索引, 您正在访问第一个元素并传递给整个 listview 请遵循Listview的基本编程
    http://www.wingnity.com/blog/android-json-parsing-and-image-loading-tutorial/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-07
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多