0

putExtra を使用してアクティビティ A から TextViews を送信し、アクティビティ B に TableRow に送信することに成功しました。問題なく SavePreferences を使用して、次回のビューを保持できます。私の問題は、次にいくつかのエントリをアクティビティ A に入れ、アクティビティ B に送信するときに、以前に保存したものを破棄しないアクティビティ B で新しい TableRow を作成するにはどうすればよいですか?

いくつかの編集の後、私は今このようになり、アクティビティ A から TableRow を生成します! ただし、行を保存したり、新しい行を作成したりすることはできません。

TableLayout01 = (TableLayout) findViewById(R.id.TableLayout01);
    TableRow tableRow1 = new TableRow(this);

Intent in = getIntent();
    if (in.getCharSequenceExtra("blah") != null) {
        final TextView resultTextView = new TextView(this);
        resultTextView.setText(in.getCharSequenceExtra("blah"));
        tableRow1.addView(resultTextView);

Intent is = getIntent();
    if (is.getCharSequenceExtra("no") != null) {
        final TextView date = new TextView(this);
        date.setText(is.getCharSequenceExtra("no"));
        tableRow1.addView(date);



TableLayout01.addView(tableRow1, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,1.0f));
4

2 に答える 2

1

新しい tableRowを追加する場合は、最初にテーブル レイアウトの参照を取得する必要があります。メソッドを使用してそれを行うことができますfindViewById

TableLayout mainLayout = (TableLayout) findViewById(R.id.your_id);

ここで、すでに定義されている tableRow と同じレイアウトに基づいて、新しい tableRowを作成する必要があります。そのためには、レイアウトをインフレートする必要があります。を使用しLayoutInflaterて、レイアウトに基づいて新しいビューを作成します。

mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

newTableRow = LayoutInflater.from(getBaseContext()).inflate(R.layout.your_table_row, parent, false);//general use

layoutInflater の機能をよりよく理解するには、LayoutINflater のドキュメントをお読みください。

この時点で、tableRow内に textView を設定できます。原作者

final TextView = (TextView) newTableRow.findViewById(R.id.blahblah);
setmsg.setText(in.getCharSequenceExtra("blah"));  

いくつかの操作の後、tableLayout 内に tableRow を追加する必要があります。

tableLayout.addView(newTableRow)
于 2013-05-22T19:58:26.580 に答える