2017-11-24 4 views
1

与えられた行番号と列番号を持つ数値表を生成しようとしています。このプログラムは、ユーザーから2つのパラメータを受け取り、与えられたパラメータでテーブルの行と列を作成します。各セルの乱数値は1から100の間です。 私のXMLには、自分のパラメータになる2つの異なるEditTextビューがあります。 「作成」、「計算」、「リセット」、「終了」の4つのボタンがあります。ユーザーが「作成」ボタンをクリックすると、与えられた行と列の値を持つテーブルが生成されます。したがって、XMLファイルではなく、Javaファイルからテーブルを作成する必要があります。Androidテーブルをプログラムで作成する

これは、これまでの私のコードです:

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

私は「のための」ループでエラーを取得しています。それは、 "TableRow"はコンテキストパラメータを内部で取得しなければならないと言います。しかし、私は本当にそれがどんな種類のパラメータを必要としているのか理解できませんでした。私はテーブルの作成をプログラムで検索しようとしましたが、これまでのところ運はありません。このエラーを修正するにはどうすればいいですか?

答えて

3

テーブル行を作成するときにコンテキストを渡す必要があります。

以下のようにjavaファイルで表示

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

キャスト以下のようなライナーのレイアウトを追加するコード

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

の下に試してみて、あなたはまた、あなたのxmlファイル、例えばXMLの任意のビューにtablelayoutを追加する必要があります

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

は次のように、このビューには、あなたのテーブルレイアウトを追加

mainLayout.AddView(table); 
以下
+0

提供したコードは機能しましたが、アプリケーションを実行すると何も起こりませんでした。私はパラメータを与えましたが、テーブルは作成されません。 – rawsly

+0

これは、どのビューでもテーブルビューを追加していないため、テーブルを作成してxmlの任意のビューにそのテーブルを追加しないためです – Munir

+0

ありがとうございました!私は自分のXML内に新しいLinearLayoutを作成し、それに固有のIDを与えました。次に、このレイアウト内にテーブルを追加しました。さて、私はテーブルスタイリングに取り組まなければなりません。あなたの答えをありがとう! – rawsly

関連する問題