安卓如何通过编程创建表格

5
我正在尝试生成一个数字表格,其中包含给定的行数和列数。程序从用户那里获取两个参数,并使用给定的参数创建行和列的表格。每个单元格将具有1到100之间的随机数值。
就目前而言,我已经使用了2个不同的EditText视图来编写我的XML,它们将成为我的参数。我将使用四个按钮“创建”,“计算”,“重置”,“退出”。当用户点击“创建”按钮时,将使用给定的行和列值生成表格。因此,我必须从我的Java文件中创建表格,而不是从XML文件中创建。
以下是我的代码:
public class MainActivity extends AppCompatActivity {

private Button btnCreate, btnCalculate, btnReset, btnExit;
private EditText txtColumn, txtRow;
private LinearLayout linLayout;
private TableLayout table;
private TextView txtResult;
private Random random;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnCreate = (Button) findViewById(R.id.btnCreate);
    btnCalculate = (Button) findViewById(R.id.btnCalculate);
    btnReset = (Button) findViewById(R.id.btnReset);
    btnExit = (Button) findViewById(R.id.btnExit);

    txtColumn = (EditText) findViewById(R.id.txtColumn);
    txtRow = (EditText) findViewById(R.id.txtRow);
    txtResult = (TextView) findViewById(R.id.txtResult);
    txtColumn.requestFocus();

    random = new Random();

    TableLayout table = new TableLayout(this);

    btnCalculate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

        }
    });

    btnCreate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            table.setLayoutParams(new TableLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
            table.setShrinkAllColumns(true);
            table.setStretchAllColumns(true);
            int columnNumber = Integer.parseInt(txtColumn.getText().toString());
            int rowNumber = Integer.parseInt(txtRow.getText().toString());

            for(int i=0; i<rowNumber; i++) {
                TableRow row = new TableRow();
                for(int j=0; i<columnNumber; i++) {
                    int value = random.nextInt(100) + 1;
                    TextView tv = new TextView();
                    tv.setText(String.valueOf(value));
                    row.addView(tv);
                }
                table.addView(row);
            }
        }
    });

    btnExit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            System.exit(0);
        }
    });
    btnReset.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            txtColumn.setText(null);
            txtRow.setText(null);
            txtResult.setText(null);
        }
    });
}
}

我的“for”循环出现了错误。它说“TableRow”需要在内部获得Context参数。然而,我真的不知道它想要什么样的参数。我尝试过以编程方式搜索表的创建,但迄今为止没有成功。我应该如何解决这个错误?

1个回答

10

在创建表格行时,您需要传递上下文。尝试以下代码:

for (int i=0; i < rowNumber; i++) {
  TableRow row = new TableRow(MainActivity.this);
      for (int j=0; j < columnNumber; j++) {
        int value = random.nextInt(100) + 1;
        TextView tv = new TextView(MainActivity.this);
        tv.setText(String.valueOf(value));
        row.addView(tv);
      }
  table.addView(row);
}

你还需要在任何一个xml视图中添加 tablelayout ,例如在你的xml文件中添加如下linear layout:

<LinearLayout 
    android:id="@+id/mainLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"/>

在Java文件中像下面这样转换视图

LinearLayout mainLayout = findViewById(R.id.mainLayout); 

请将您的表格布局添加到此视图中,如下所示

mainLayout.addView(table);

提供的代码有效,但当我运行应用程序时没有任何反应。我提供了参数,但表没有被创建。 - rawsly
1
这是因为您没有在任何视图中添加表视图,您只是创建了一个表格,但没有将该表格添加到XML的任何视图中。 - Munir
谢谢您的回复!我在我的XML中创建了一个新的LinearLayout并为其分配了一个唯一的ID。然后我将我的表格放在这个布局中。现在,我需要处理我的表格样式。感谢您的答案! - rawsly
@rawsly 很高兴为您提供帮助..! - Munir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接