안녕하세요.
우선 만들려는 모양새는..50 x 70 정도의 표를 만들건데.
XML은 아래와 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:background="#FFFFFF">
<ScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF">
<TableLayout
android:id="@+id/table"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="#FFFFFF">
</TableLayout>
</ScrollView>
</LinearLayout>
그리고 커스텀 뷰(행,열, 그룹코드, TextView를 멤버변수로..)를 만들어서
그룹별로 배경색을 다르게 설정하고 ArrayList를 생성하여 add합니다.
즉. 각각 셀에 넣을 커스텀뷰를 생성해서 ArrayList에 넣는 겁니다..
그러면 3500개의 객체가 생성되는..;;
암튼 액티비티에서 TableLayout을 findViewById로 받아서
for문을 2번 돌면서 행,열에 맞는 커스텀뷰를 ArrayList에서 끄집어 냅니다.
그리고 1행마다 TableRow를 생성하고 해당 커스텀뷰를 TableRow에 Add 시키고
전체..70행을 다 돌면 TableRow를 TableLayout에 Add합니다.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
TableLayout tableLayout = (TableLayout) findViewById(R.id.table); // 테이블 id 명
//초기화
initializeMap(tableLayout, TripColorApp.ROW_CNT, TripColorApp.COL_CNT);
public void initializeMap(TableLayout tableLayout, int rowCnt, int colCnt){
//파라미터로 전달받은 행의 개수
for (int i = 1 ; i <= rowCnt ; i++) {
// Creation Table Row
TableRow tableRow = new TableRow(this);
tableRow.setLayoutParams(tableRowParams);
//파라미터로 전달받은 열의 개수
for (int j = 1; j <= colCnt; j++) {
// 위치 = (row - 1) x 49 + col
int position = (i - 1)*colCnt + j;
RectView rectView = mapArrayList.get(position - 1);
if(rectView == null) {
rectView = new RectView(this);
}
rectView.setLayoutParams(cellParams);
tableRow.addView(rectView);
}
tableLayout.addView(tableRow);
}
결과적으로는 잘 됩니다..근데 한..3초~5초 정도 걸리는것 같아요
제가 만들고 있지만 저라면 이어플 느려서 안쓸것 같아요..ㅠㅠ
그래서 질문은..
1. 50 x 70 표를 작성하고 특정 셀들끼리 그룹을 지어서 배경색을 다르게 해야하고,,3500개 셀중 하나를 클릭하면 해당 커스텀뷰의 그룹코드에 해당하는 모든 셀들이 함께 눌리듯한 이펙트를 주고 싶습니다. 어떤 식으로 구현해야 속도도 빠르고 잘 될까요?ㅠ.ㅠ
2. 뒤로가기 버튼을 누른다음 다시 표를 불러올때, 이미 addview를 했기 때문에 removeView를 하라고 오류가 뜹니다.
removeView를 하게되면 결국 3500개를 다시 불러와야한다는건데..어떻게 처리해야할까요..