0

編集: Blumer が指摘したように、私はアイテムをテーブルに追加していなかったので、この質問が表示されたのは、私が不注意で間違いに気付かなかったからです。

サーバーから結果を受け取り、結果に基づいて行を追加する必要があるため、動的な TableLayout を作成しようとしていますが、テーブルが更新されていません。(また、TableLayout には既に 1 つの最初の行、ヘッダー行があります)。

これは私のコードです:

    Room[] rooms = State.rooms;
    TableLayout tblBookDetails = (TableLayout) findViewById(R.id.tblbookdetails);
    for(int i = 0; i < rooms.length; i++) {
        TableRow tr = new TableRow(this);
        tr.setLayoutParams(new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
        LayoutParams layout_wrapwrap = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        layout_wrapwrap.rightMargin = 10; //TODO: Convert into DP
        Resources res = getResources();

        TextView txt1 = new TextView(this);
        txt1.setLayoutParams(layout_wrapwrap);
        txt1.setTextColor(res.getColor(android.R.color.black));
        txt1.setText(rooms[i].name);
        TextView txt2 = new TextView(this);
        txt2.setLayoutParams(layout_wrapwrap);
        txt2.setTextColor(getResources().getColor(android.R.color.black));
        txt2.setText(rooms[i].price + " " + rooms[i].currency);
        EditText edit1 = new EditText(this);
        edit1.setLayoutParams(layout_wrapwrap);
        //Must use deprecated method, since support library does not provide for this.
        edit1.setBackgroundDrawable(res.getDrawable(android.R.drawable.edit_text));
        edit1.setEms(3);
        edit1.setInputType(InputType.TYPE_CLASS_NUMBER);
        EditText edit2 = new EditText(this);
        edit2.setLayoutParams(layout_wrapwrap);
        //Must use deprecated method, since support library does not provide for this.
        edit2.setBackgroundDrawable(res.getDrawable(android.R.drawable.edit_text));
        edit2.setEms(3);
        edit2.setInputType(InputType.TYPE_CLASS_NUMBER);
        Spinner spinner = new Spinner(this);
        layout_wrapwrap.rightMargin = 0;
        spinner.setLayoutParams(layout_wrapwrap);

        Integer[] numbers = new Integer[rooms[i].count];
        for(int j = 0; j < numbers.length; j++) {
            numbers[j] = i + 1;
        }
        ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(
                BookActivity.this, R.layout.spinner_textview, numbers);
        spinner.setAdapter(adapter);
        tblBookDetails.addView(tr);
    }
    //Another exquisite beauty of Java.
    Log.d("USR", Integer.valueOf(tblBookDetails.getChildCount()).toString());
    tblBookDetails.invalidate();
    tblBookDetails.refreshDrawableState();

混乱を避けるために、Room[] 配列は単なるプロパティ ホルダー クラスです。このコードは非常に複雑に見え、テーブルは更新されていません。インターネットでかなり検索しましたが、この問題の解決策は見つかりませんでした。

前もって感謝します。

4

1 に答える 1

1

に追加trする場所はわかりますが、、、 などを に追加するtblBookDetails場所はわかりません。これらのビューを行に追加してみてください。現在、 を追加しているように見えますが、そこには何もありません。txt1txt2edit1trTableRow

于 2012-10-15T14:37:24.500 に答える