如何根据另一个活动的值创建和保存新的tableRow?

时间:2013-05-22 19:25:02

标签: android android-intent tablerow

我已经成功地使用putExtra从活动A发送TextViews并将活动B发送到TableRow。我可以使用SavePreferences毫无问题地保留下次查看。我的问题是下次我将一些条目放入活动A并发送到活动B时如何在活动B中创建一个新的TableRow,它不会破坏以前保存的那个?

经过一些 编辑 后,我现在就这样了 它从Activity A生成TableRow!除了我仍然无法 保存 该行或制作一个 New One 一个。

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));

2 个答案:

答案 0 :(得分:1)

如果您想添加 new tableRow ,首先必须获取表格布局的参考。您可以使用findViewById方法完成此操作。

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

现在,您应该根据已定义的tableRow的相同布局创建 new 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 Documentation

此时,您可以在 tableRow 中设置textView。 Original author

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

经过一些操作后,你应该在tableLayout中添加tableRow。

tableLayout.addView(newTableRow)

答案 1 :(得分:0)

只需在清单文件中指定即可创建活动B的单个实例。

android:launchMode="singleInstance"

为要插入表行的数据创建静态变量。使用其getter和setter设置活动A中的数据并获取活动B中的数据。