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で受け入れるように設定されていることが原因である可能性があります。StringString []

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

したがって、String配列のリストがあります。これは基本的に2D配列と同等です。

これは、ArrayAdapterが指定したTextViewにテキストを設定している場合toString()、配列オブジェクト全体、つまりハッシュコードを呼び出していることを意味します。

独自に作成ArrayAdapterし、メソッドをオーバーライドして、getView()実行したいことを実行することを検討してください。このようなチュートリアルはオンラインでたくさんあります。

于 2013-01-15T00:50:00.677 に答える
0

データを保持する POJO を作成することをお勧めします。CourseInfoPOJOには、その意味を明確に定義するなどの名前を付けることができます。同様に、CourseInfowill のメンバーは、それらが表すものを明確に定義します。これは、各データの意味を明確に定義できるため、配列よりも優先されます。通常、Java プログラマーは異種データを保持する配列を使用することに眉をひそめます。この場合、各データの型は同じでも、配列の各要素の意味は異なります。

このソリューションには、変更できるという利点があります

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

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