[英]Android Creating Table Programmatically
我正在嘗試生成具有給定行數和列數的數字表。 該程序從用戶那里獲取兩個參數,並使用給定的參數創建表的行和列。 每個單元格將具有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參數。 但是,我真的不明白它想要什么樣的參數。 我嘗試以編程方式搜索表創建,但是到目前為止還沒有運氣。 我應該如何解決此錯誤?
創建表行時需要傳遞上下文。 嘗試下面的代碼
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);
}
而且您還需要將tablelayout添加到xml的任何視圖中,例如在xml文件中添加如下所示的襯板布局
<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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.