0

当我尝试将值打印到文本字段时,它们显示为 [Ljava.lang.String;@405af10

try {
    JSONObject jObject = new JSONObject(byteArrayOutputStream.toString());

    JSONArray Monday = jObject.getJSONArray("Monday");

    String time = "";
    String module = "";
    String lecturer = "";

    listAdapter = new ArrayAdapter<String[]>(this, R.layout.simplerow);


    for (int i = 0; i < Monday.length(); i++) 
    {
        time = Monday.getJSONObject(i).getString("time");
        module = Monday.getJSONObject(i).getString("module");
        lecturer = Monday.getJSONObject(i).getString("lecturer");

        listAdapter.add(new String[] {time, module, lecturer});

    }
    mainListView.setAdapter(listAdapter);    

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

在我有的 simplerow xml 文件中

<TextView  xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/rowTextView" 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content"
 android:padding="10dp"
 android:textSize="16sp" >
</TextView>

因此,每次打印模块或讲师时,它都应该在它自己的文本视图框中。但它不起作用,我不知道为什么或如何修复它。

4

2 回答 2

2

这很可能是因为您ArrayAdapter设置为接受String数组 ( String [])。

listAdapter = new ArrayAdapter<String[]>(this, R.layout.simplerow); //Parameterized for String []

因此,您有一个String数组列表,它基本上相当于一个二维数组。

这意味着,当将ArrayAdapterText 设置为您指定的 TextView 时,它正在调用toString()整个数组对象,因此是哈希码。

考虑制作自己的方法ArrayAdapter并覆盖该getView()方法,以便它执行您想做的事情。网上有很多教程,比如这个

于 2013-01-15T00:50:00.677 回答
0

我建议你做一个 POJO 来保存你的数据。POJO 可以具有CourseInfo明确定义其含义的名称。同样,成员CourseInfo将清楚地定义他们所代表的内容。这比数组更可取,因为您可以清楚地定义每条数据的含义。通常,Java 程序员不喜欢使用包含异构数据的数组。在这种情况下,即使每条数据的类型相同,但数组中每个元素的含义是不同的。

此解决方案的优点是您可以更改

listAdapter = new ArrayAdapter<String[]>(this, R.layout.simplerow);

listAdapter = new ArrayAdapter<CourseInfo>(this, R.layout.simplerow);
于 2013-01-15T00:55:34.520 回答