-1

私のコードでは、タイムテーブルにデータベースのデータを入力しようとしています。これを行う最善の方法は、空白のタイムテーブルを作成し、後で記入することです。必要な行数が正確にわかっているので、TableRows の配列を使用し、各行に一定量の TextViews を追加しています。

ただし、実行するたびにクラッシュします。テーブル行にコンテキストがないことと関係があるのではないかと思いますか? これが関連するすべてのコードです。誰かが私を助けてくれれば本当にありがたいです。

public class Timetable123 extends Activity {
    TableRow[] row= new TableRow[36];  //declared at start

    InitializeTable(SortedDatesList.toArray(new String[SortedDatesList.size()])); // List converted to array sent to initializeTable

}

    private void InitializeTable(String...params){


        for(int i=0;i<36;i++) {
            row[i].setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
            try {
                for (Integer j = 0; j < (params.length+1); j++) {
                    TextView tv = new TextView(this);
                    tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
                            TableRow.LayoutParams.WRAP_CONTENT));
                    tv.setBackgroundResource(R.drawable.cell_shape);
                    tv.setPadding(5, 5, 5, 5);
                    row[i].addView(tv);
                    System.out.println(params[i] + " run " + i);
                }
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
    }

initializeTable が呼び出されると常にクラッシュしますが、その理由が本当にわかりません。

4

1 に答える 1

0

タイプの Array を作成しますが、 Array からアクセスする前にオブジェクトTableRowを追加しません:TableRowTableRow

 for(int i=0;i<36;i++) {
   row[i]=new TableRow(Timetable123.this); //<< Create Object here
   row[i].setLayoutParams(new 
           TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
                        TableRow.LayoutParams.WRAP_CONTENT));
...
}
于 2015-02-18T10:35:18.117 に答える