저는 아직 안드로이드 프로그래밍에있어 새로운 것을 시도하고 있습니다. 5x5 차원의 TableLayout을 만들고 싶습니다. 나는 GridView BaseAdapter를 사용하여 Inflate 서비스를 사용하여이 작업을 수행 할 수 있음을 알고 있습니다. 하지만이 중 하나는 테이블 레이아웃을 사용하여 적용하려고합니다. 아래는 코드입니다. TableLayout의 새 인스턴스와 Table 행의 새 인스턴스를 만듭니다. 각 테이블 행에서 5 TextView 인스턴스를 만들었습니다. 하지만 일단 에뮬레이터 나 휴대 전화에서 열면 TableRow가 생성되지 않고 비어있는 빈 테이블 레이아웃 만 만들어집니다. 또한 예외가 발생하지 않았습니다.5x5 크기의 안드로이드 테이블 레이아웃
GridView navIcon = (GridView) findViewById (R.id.content); navIcon.setAdapter (새 ImageAdapter (this));
navIcon.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,long id) {
// TODO Auto-generated method stub
if (position==0){
try{
TableLayout calgrid = (TableLayout) findViewById(R.id.gridtable);
Context ctxt = v.getContext();
TextView[] tView = new TextView[25];
calgrid = new TableLayout(ctxt);
int dip = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,(float) 1, getResources().getDisplayMetrics());
int counter=1;
TableRow[] tr = new TableRow[5];
for(int j=0;j<5;j++){
tr[j] = new TableRow(ctxt);
for(int i=0;i<5;i++){
tView[i] = new TextView(ctxt);
tView[i].setText(String.valueOf(counter));
tView[i].setTextSize(15);
counter+=1;
tView[i].setWidth(50 * dip);
tView[i].setPadding(20*dip, 0, 0, 0);
tView[i].setTextColor(Color.rgb(100, 200, 200));
Toast.makeText(getApplicationContext(), "tView["+i+"] value " + String.valueOf(tView[i].getText()), Toast.LENGTH_SHORT).show();
tr[j].addView(tView[i], 50, 50);
}
calgrid.addView(tr[j]);
}
}catch(Exception e){
Log.e("MainActivity", "Error in activity", e);
Toast.makeText(getApplicationContext(),e.getClass().getName() + " " + e.getMessage(),Toast.LENGTH_LONG).show();
}
}
}
});
감사합니다. 기존 코드를 그대로 유지합니다. calgrid = 새로운 TableLayout (ctxt)을 제거한 후에 작동합니다. 내 코드에서이 한 줄의 코드가 작동하지 않기 때문입니다. 다음에는 객체를 인스턴스화 할 때주의해야합니다. 나는 어제 내 하루 종일 잘못한 것을 알아 내려고합니다. 당신의 충고는 정말 도움이됩니다. – Zahary
도움이 되니 기쁩니다. 귀하의 질문에 답변이 있으면이 대답을 수락하십시오. – Craigy