제가 동적으로 헤더의 셀 및 행을 병합하는 작업을 진행중입니다.
이코드가 먹히지를 않아서 셀병합을 못하고 있습니다.
이름이 같으면 병합을 하려고하는데
java 코드상에서 병합할 수 있는 적절한 방법을 알려주시면 감사하겠습니다.
데이터를 조회할 이중포문 소스도 추가하였습니다.
감사합니다.
params.columnSpec = GridLayout.spec(i, madeColSpan);
for (int j = 0; j < 2; j++) {
String spanTxt = "";
int madeColSpan = 1;
for (int i = 0; i< pmHeaderList.size(); i++) {
GridLayout.Spec rowSpec = GridLayout.spec(j, 1.0f);
GridLayout.Spec columnSpec = GridLayout.spec(i, 1.0f);
GridLayout.LayoutParams params = new GridLayout.LayoutParams(rowSpec, columnSpec);
PmCheckHeader tmpHeader = new PmCheckHeader();
tmpHeader = pmHeaderList.get(i);
int tmpRowSpan = 1 ;
int madeRowSpan = 1;
int tmpColSpan = 1 ;
if (j == 0) {
TextView txtView = new TextView(this);
txtView.setTextColor(Color.parseColor("#FFFFFF"));
txtView.setText(pmHeaderList.get(i).getHdrRow1());
txtView.setGravity(Gravity.CENTER);
txtView.setTextSize(14);
if (i == 0) {
txtView.setWidth((int) (pxToDp(PmCheckResultListActivity.this, pmHeaderList.get(i).getColWidth()) * 4 ));
} else {
txtView.setWidth((int) (pxToDp(PmCheckResultListActivity.this, pmHeaderList.get(i).getColWidth()) * 8 ));
}
txtView.setBackgroundResource(R.drawable.table_header_border);
// txtView.setHeight(60);
txtView.generateViewId();
txtView.setTag(pmHeaderList.get(i).getColumnId());
if (madeColSpan == 1) {
for (int k = 0; k< pmHeaderList.size(); k++) {
PmCheckHeader tmpKHeader = new PmCheckHeader();
tmpKHeader = pmHeaderList.get(k);
if (k > i) {
if (tmpHeader.getHdrRow1().equals(tmpKHeader.getHdrRow1()) && tmpColSpan == 1) {
tmpColSpan ++;
} else if (tmpHeader.getHdrRow1().equals(tmpKHeader.getHdrRow1()) && tmpColSpan > 1) {
tmpColSpan ++;
} else if (!tmpHeader.getHdrRow1().equals(tmpKHeader.getHdrRow1()) && tmpColSpan > 1) {
break;
}
}
}
}
params.columnSpec = GridLayout.spec(i, madeColSpan);
if (tmpColSpan > 1 && madeColSpan == 1) {
madeColSpan = tmpColSpan;
spanTxt = tmpHeader.getHdrRow1();
}
if (madeColSpan == tmpColSpan && madeColSpan > 1) {
txtView.setWidth(txtView.getWidth() * madeColSpan);
} else if (madeColSpan > 1){
// txtView.setVisibility(View.GONE);
txtView.setWidth(0);
madeColSpan --;
} else {
spanTxt = "";
}
pmCheckGridLayout.addView(txtView, params);
// txtView.setBackgroundColor(ContextCompat.getColor(this, R.color.listview_header_bg));
tmpView.setBackgroundColor(Color.parseColor("#FFFFFF"));
// tableRow.addView(tmpView);
} else if (j == 1 && hasTwiceHeader > 0) {
TextView txtView = new TextView(this);
txtView.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT));
txtView.setTextColor(Color.parseColor("#FFFFFF"));
txtView.setGravity(Gravity.CENTER);
txtView.setTextSize(14);
if (i == 0) {
txtView.setWidth((int) (pxToDp(PmCheckResultListActivity.this, pmHeaderList.get(i).getColWidth()) * 4 ));
// txtView.setBackgroundResource(R.drawable.table_left_n_right_border);
} else {
txtView.setWidth((int) (pxToDp(PmCheckResultListActivity.this, pmHeaderList.get(i).getColWidth()) * 8 ));
// txtView.setBackgroundResource(R.drawable.table_right_border);
}
txtView.setWidth((int) (pxToDp(PmCheckResultListActivity.this, pmHeaderList.get(i).getColWidth()) * 8 ));
// txtView.setHeight(60);
txtView.generateViewId();
txtView.setTag(pmHeaderList.get(i).getColumnId());
} // i
} // j