사용자 응답을 기반으로 상대 레이아웃에 textviews를 동적으로 추가하여 컬러 격자 패턴을 만듭니다. 일반적으로 텍스트 뷰 태그의 값에 따라 배경색이 다른 5000 개 이상의 텍스트 뷰를 포함 할 수 있습니다.루프 속도 향상 방법
나는 모든 textviews를 반복하여 같은 색상을 가지고 나머지는 회색으로 표시하는이 방법을 사용합니다. 이것은 500 개의 텍스트 뷰가 있다고 말할 때 잘 작동하지만 숫자가 더 높을 때 5000이라고 말하면 완료하는데 13 초가 걸립니다.
if (code.equals("all")) {
for (int i = 0; i < textViewIDs.size(); i++) {
TextView tv = (TextView) findViewById(textViewIDs.get(i));
if (!tv.getTag().toString().equals("header")) {
tv.setBackgroundColor(Color.parseColor("#" + tv.getTag().toString()));
}
}
} else {
for (int i = 0; i < textViewIDs.size(); i++) {
TextView tv = (TextView) findViewById(textViewIDs.get(i));
if (!tv.getTag().equals(code)) {
if (!tv.getTag().toString().equals("header")) {
tv.setBackgroundColor(Color.LTGRAY);
}
}else{
tv.setBackgroundColor(Color.parseColor("#" + tv.getTag().toString()));
}
}
}
textViewIDs는 모든 textviewID를 포함하는 배열입니다.
속도를 높이려면 어떤 조치를 취할 수 있습니까?
업데이트 : 그 위젯 수가 이상적이지는 않지만 더 나은 해결책을 찾지 못했습니다. 각 격자 셀뿐만 아니라이 경우 각 texview는 서로 다른 색상을 가지고 있기 때문에 텍스트를 추가 할 수 있도록 셀의 onclick 이벤트를 관리 할 수 있어야합니다. 그것은 textviews에 대한 추론이었다. textviews를 사용하기 전에 모든 요소를 그렸습니다.하지만 각 셀에 onclick 이벤트를 추가하는 방법을 찾지 못했습니다.
내가 뭘 하려는지, 내가 잘못한 길로 빠져 나간 사람을 도우려는 개념을 자세히 설명하는 것이 좋습니다.
이것은 스티치 차트로 이미지를 변환하는 훨씬 더 큰 응용 프로그램의 일부입니다. 사용자 입력에 따라 색칠 된 셀의 격자가 그려지며 각 셀은 원본 이미지에서 가장 지배적 인 색에서 계산 된 단색입니다. 격자가 화면보다 커지므로 내보기가 가로 및 세로보기에 배치되어 팬 및 확대/축소가 가능합니다. (이것은 모두 잘 작동합니다). 그리드 셀을 클릭 할 수 있어야 배경 색상을 켜거나 끌 수 있으며 스티치 (셀)을 완료로 표시하는 단일 텍스트 "X"문자를 추가 할 수 있습니다. (이것은 텍스트 뷰 (셀)이다>가 충분한 정보가 500)
희망 ...
배열에 메서드가 없습니다. – Blackbelt
잘 배열, 그 배열 목록 ...하지만 난 당신이 실제로 루프에 대한 속도를 높일 수 있다고 생각하지 않는다 ...하지만 배열은 정렬 된 경우 더 빨리 도움이 되길 원합니다. :) –
또는 어쩌면 ListView를 사용하려고 시도하십시오 –