0

で問題が発生しView leaderています。2 番目のパラメーターが何になるべきかわかりません

        TableLayout leaderTable = (TableLayout)findViewById(R.id.leaderTable);            

        TableRow tr = new TableRow(this);
        tr.setId(i);
        tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));

        View leader = new View(UserView.this, null, R.id.leaderLayout);

        TextView number = (TextView)leader.findViewById(R.id.numberView);
        number.setText(String.valueOf(i+1));

        tr.addView(leader);

        leaderTable.addView(tr);

問題はTextView、のサブビューであるにもかかわらず、 my が null であることですleader.

この問題についてかなり混乱しています。これが私の XML です

<TableLayout 
                 android:id="@+id/leaderTable"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center">

            </TableLayout>

XML をさらに処理する必要がありますか? テーブル行を含める必要はありませんか?

R.id.leaderLayout独自のxmlファイルであり、そのIDを持つ線形レイアウトです

4

1 に答える 1

1

ビューコンストラクターの開発者ページは次のとおりです。

https://developer.android.com/reference/android/view/View.html#View%28android.content.Context%29

ビューの2番目と3番目のパラメーターは、そのビューの作成時にこのビューに特定の属性またはスタイルを設定する場合に使用されます。

leader実際に変数を膨らませたいようです。これにより、xmlで定義されたレイアウトが取得され、動的に作成されたビューに割り当てられます。LeaderLayoutはLinearLayoutであるとおっしゃっていたので、次のようになります。

//Initialize the layout inflator, do this once and use it to inflate as many views as you want
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

//Assign your custom view to the variable leader
LinearLayout leader = (LinearLayout) inflator.inflate(R.layout.leaderLayout, tr); 

inflateの最初のパラメーターはR.layoutです。nameOfYourXmlFile。2つ目は、膨張したビューの親となるViewGroupです。これが完了するとfindViewById、リーダーで使用してXmlファイルの子ビューを取得し、さらに子を動的に追加して、TableRowの子として追加できます。

メソッドの他の使用法について知りたい場合に備えて、LayoutInflatorの開発者ページを次に示しますinflate

http://developer.android.com/reference/android/view/LayoutInflater.html

于 2012-05-16T17:22:37.510 に答える