안녕안드로이드의 ListView 내가 ListView에 포함 된 레이아웃을 강조 문제를
을 잃는다. 이 ListView의 각 뷰 (행)는 CheckBox, ImageView 및 TextView (가로형)가 포함 된 LinearLayout입니다.
내 문제는 다음과 같습니다. 트랙볼을 사용하여 ListView의 행을 강조 표시하면 작동합니다 (행의 배경색은 오렌지색). 행이 강조 표시 될 때 트랙볼을 클릭하면 현재 표시된 레이아웃을 다른 레이아웃 (setContentView())으로 전환합니다. 이제는 원래 레이아웃을 ListView로 다시 표시하면 (다시 인스턴스화하기 위해 인스턴스를 저장했지만 다시 만들어지지 않습니다!) 강조 표시된 행은 더 이상 강조 표시되지 않습니다. google에 따르면 이것은 괜찮습니다. 트랙볼을 사용하자마자 강조 표시가 다시 나타납니다.
실제 문제는 목록에서 위아래로 이동하기 위해 트랙볼을 사용하더라도 ListView의 다른 행이 강조 표시됩니다. 대신, 스크롤의 결과로 강조 표시되어야하는 각 행에서 TextView가 선택되고 TextView가 (TruncateAt.MARQUEE)를 똑딱 거리게 설정했기 때문에이를 알 수 있습니다.
트랙볼을 클릭 한 경우에만 강조 표시가 TextView가 현재 실행중인 행으로 돌아옵니다.
TextView를 포커스가 가능하지 않고 클릭 할 수 없도록 설정하여이 문제를 해결하기 위해 노력했습니다. 나는 심지어 ListView에 setItemsCanFocus (false)를 설정하려고 시도했다. 여전히 성공하지 못했다.
도와주세요 ...
고맙습니다!
특정 문제를 해결하는 방법을 모르겠지만 새로운 환경을 시작하기보다는 레이아웃을 변경하기 위해'setContentView()'를 사용하고 있다는 점이 걱정 스럽다. 왜? –
이 질문은 많은 개발자가 묻습니다. 각 응용 프로그램의 화면에 새 Activity를 사용할지 여부. 각 화면마다 새로운 활동을 만들 필요가 없다고 생각합니다 ...각 화면은 ViewGroup이며 화면간에 전환하기 위해 setContentView()를 사용합니다 ... 그렇게 잘못 되었습니까? 감사합니다. – WhiteTigerK
일반적으로 여러 활동으로 나누는 것이 좋습니다. 한 가지 이유는 일관된 뒤로 버튼 동작을 유지하는 것입니다. 개인적으로 코드가 더 깨끗해지기 시작했으며 활동 내에서 너무 많은 상태를 관리하는 것을 좋아하지 않습니다. – James