2017-11-24 14 views
1

주어진 행과 열 번호로 숫자 표를 생성하려고합니다. 이 프로그램은 사용자로부터 두 개의 매개 변수를 가져 와서 지정된 매개 변수가있는 테이블 행과 열을 작성합니다. 각 셀의 난수 값은 1에서 100 사이입니다. 지금까지 필자는 내 매개 변수가 될 2 개의 다른 EditText보기를 사용하여 XML을 코딩했습니다. "만들기", "계산", "재설정", "종료"의 4 가지 버튼이 있습니다. 사용자가 "Create"버튼을 클릭하면 지정된 행과 열 값으로 테이블이 생성됩니다. 따라서 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"는 내부에 Context 매개 변수를 가져와야한다고 말합니다. 그러나 실제로 어떤 종류의 매개 변수가 필요한지 이해하지 못했습니다. 프로그래밍 방식으로 테이블 만들기를 검색하려고했지만 지금까지는 아무런 운이 없었습니다. 이 오류를 어떻게 수정해야합니까?

답변

3

테이블 행을 생성하는 동안 컨텍스트를 전달해야합니다. 코드

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

아래 시도하고 당신은 또한

아래와 같은 자바 파일에서 볼 수
<LinearLayout 
    android:id="@+id/mainLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"/> 

아래 캐스트 같은 라이너 레이아웃을 추가하여 XML 파일의 예를 들어 XML의보기로 TableLayout을 추가해야합니다
LinearLayout mainLayout = findViewById(R.id.mainLayout); 

처럼이보기로 테이블 레이아웃을 추가

mainLayout.AddView(table); 
아래
+0

제공 한 코드가 작동했지만 응용 프로그램을 실행할 때 아무 일도 없었습니다. 나는 매개 변수를 주었지만 표는 작성되지 않았습니다. – rawsly

+0

보기에 테이블보기를 추가하지 않았기 때문에 테이블을 만들었지 만 xml의 모든보기에 해당 테이블을 추가하지 않아도됩니다. – Munir

+0

답장을 보내 주셔서 감사합니다! XML 내에서 새로운 LinearLayout을 작성하고 고유 한 ID를 부여했습니다. 그런 다음이 레이아웃 안에 내 테이블을 추가했습니다. 자, 나는 테이블 스타일링을해야만한다. 답변 주셔서 감사합니다! – rawsly