300 체크 박스의 ON / OFF 전환과 사용자 경험을 개선

막심 벤코 :

나는 사용자가 여러 항목을 선택하고 선택된 재료와 조리법의 목록을 얻을 수있는 응용 프로그램을 요리 간단했다. 태그에 의해 체크 박스의 : 재료를 선택하는 2 가지 모드가 있습니다. 두 번째 모드에서는 원하는 성분의 번호를 입력하고 버튼을 "RANDOMIZE"아니면 그냥 눌러 "선택 / 선택 해제 모든 재료"버튼을 칠 수있다. 체크 박스 300의 숫자로 시작 문제 (386, 구체적으로). 코드가 잘 작동하지만, GUI의 시간이 냉동 유지하는 것은 너무 큽니다.

그래서, 내가있어 HashMap <String/CheckBox> checkBoxHashMap키 확인란의 태그입니다. (모두 선택 해제에 대해 동일하지만, 모든를 선택하려면 false값)이 코드를 사용하고 있습니다 :

for (CheckBox chkBox: checkBoxHashMap.values()) {
        chkBox.setChecked(true);
    }

사용 1) : 내가 사용하려고 무엇 ProgressBar. 문제는,의 애니메이션이었다 ProgressBar모두의 선택 / 선택 해제하는 동안 얼어 CheckBox말이지. 또한, 대부분의 시간 ProgressBar도 나타났다하지 않았다는 (내가 숨겨 ProgressBar모든 후 CheckBox사용, 2 ES가 선택되었다) chkBox.jumpDrawablesToCurrentState();를 호출 한 직후 chkBox.setChecked(true);그리고 내가 성능을 얻을 수있는 최선 만, 여전히이 느껴지 나를 만족하지 않았다 .

내가 원하는 : 내가 좀 더 사용자 친화적 만들고 싶어 (냉동 GUI 사용자 모두에 친절하지 않다, 나는 믿는다). 나는 모든 떨어져 체크 박스 (애니메이션 사슬 형) 또는 애니메이션을 비활성화하고 모든 후에 다시 있도록 같은 뭔가 / 소프트 토글을 구현하려는 CheckBoxES 자신의 상태를 변경하고 모두 함께 다시 그립니다.

그런 일을 달성 할 수있는 방법이 있습니까?

egorikem :

내가 당신이라면 솔직히, 내가 사용하는 것 RecyclerView이 상황을 처리 할 수 있습니다.

화면에서 동시에 300 개 항목을 표시하는 것은 좋은 아이디어 결코 : 사용자는 아마도 한 번에 모두를 필요로 할 수없고 시스템은 이런 종류의 부하를 처리해야합니다.

개념은 즉시보기 보이지대로 그것을 위해 필요한 자원이 배치되고, 다른 데이터 셀에서 재사용 될 수 있다는 것을 의미 재순환 전망이다.

나는 입문하게 기사 를 살펴, 예를 많이 RecyclerView 약을

특정 경우에, (당신이 지금 무슨에 비해 매우 가볍고 작동입니다) 단지 업데이트 RCV에 UI 스레드에서이 작업의 결과를 사용하여, 단지 체크 박스에 설정된 적절한 데이터를 확인하고 비동기 변경

추천

출처http://43.154.161.224:23101/article/api/json?id=206892&siteId=1