2010-01-13 2 views
0

안녕안드로이드의 ListView 내가 ListView에 포함 된 레이아웃을 강조 문제를

을 잃는다. 이 ListView의 각 뷰 (행)는 CheckBox, ImageView 및 TextView (가로형)가 포함 된 LinearLayout입니다.

내 문제는 다음과 같습니다. 트랙볼을 사용하여 ListView의 행을 강조 표시하면 작동합니다 (행의 배경색은 오렌지색). 행이 강조 표시 될 때 트랙볼을 클릭하면 현재 표시된 레이아웃을 다른 레이아웃 (setContentView())으로 전환합니다. 이제는 원래 레이아웃을 ListView로 다시 표시하면 (다시 인스턴스화하기 위해 인스턴스를 저장했지만 다시 만들어지지 않습니다!) 강조 표시된 행은 더 이상 강조 표시되지 않습니다. google에 따르면 이것은 괜찮습니다. 트랙볼을 사용하자마자 강조 표시가 다시 나타납니다.

실제 문제는 목록에서 위아래로 이동하기 위해 트랙볼을 사용하더라도 ListView의 다른 행이 강조 표시됩니다. 대신, 스크롤의 결과로 강조 표시되어야하는 각 행에서 TextView가 선택되고 TextView가 (TruncateAt.MARQUEE)를 똑딱 거리게 설정했기 때문에이를 알 수 있습니다.

트랙볼을 클릭 한 경우에만 강조 표시가 TextView가 현재 실행중인 행으로 돌아옵니다.

TextView를 포커스가 가능하지 않고 클릭 할 수 없도록 설정하여이 문제를 해결하기 위해 노력했습니다. 나는 심지어 ListView에 setItemsCanFocus (false)를 설정하려고 시도했다. 여전히 성공하지 못했다.

도와주세요 ...

고맙습니다!

+1

특정 문제를 해결하는 방법을 모르겠지만 새로운 환경을 시작하기보다는 레이아웃을 변경하기 위해'setContentView()'를 사용하고 있다는 점이 걱정 스럽다. 왜? –

+0

이 질문은 많은 개발자가 묻습니다. 각 응용 프로그램의 화면에 새 Activity를 사용할지 여부. 각 화면마다 새로운 활동을 만들 필요가 없다고 생각합니다 ...각 화면은 ViewGroup이며 화면간에 전환하기 위해 setContentView()를 사용합니다 ... 그렇게 잘못 되었습니까? 감사합니다. – WhiteTigerK

+1

일반적으로 여러 활동으로 나누는 것이 좋습니다. 한 가지 이유는 일관된 뒤로 버튼 동작을 유지하는 것입니다. 개인적으로 코드가 더 깨끗해지기 시작했으며 활동 내에서 너무 많은 상태를 관리하는 것을 좋아하지 않습니다. – James

답변

0

나는 List3520을 포함하는 레이아웃을 가지고 있습니다. 확인란 이미지 뷰 및 (수평) 텍스트 뷰

는 대신, CheckedTextViewImageView를 사용하고 ListViewandroid:choiceMode를 사용 -이 의 ListView의 각보기 (행) 3 조회수를 포함하는있는 LinearLayout이다. ( 이 다시 생성되지 않는 I가 그 인스턴스를 저장를 다시 표시가됩니다!) ListView에와 다시 표시 원래 레이아웃이 경우

지금의 은 행 을 강조되지 않습니다 강조 더 이상.

하지 마십시오. ViewFlipper을 사용하거나 ListView의 표시 여부를 변경하고 표시하려는 내용을 변경하거나을 모두 하나로 유지해야한다고 생각되면 표시 여부를 변경하십시오. 또는 Lew가 제안한대로 ListView을 클릭하면 다른 Activity을 시작합니다.

이러한 조합이 귀하의 문제에 도움이 될 것으로 생각됩니다.

+0

CheckedTextView에 대해이 뷰에 대해 알지 못했지만 이것이 내 문제라고 생각하지 않습니다. 선택 모드에 대해서는 언급하지 않았지만 몇 가지 항목을 선택해야하기 때문에 선택 모드를 복수로 설정했습니다. ViewFlipper 정보 - 이것은 익숙하지 않은 anoter 클래스입니다. 그러나 그것에 대해 읽은 후에는 저에게 좋은 해결책이 아닙니다. (생각합니다 ...) - 한 번만 플립 할 수있는 옵션이 없습니다. 뒤집기 시작하고 그것을 멈추기보다는 ... 나는보기가 뒤집히는 때를위한 사건을 발견하는 것을 시도했다 그러나 그런 것이 없다. 감사합니다. – WhiteTigerK

+0

"하지만 여러 항목을 선택해야하기 때문에 다중 선택 모드를 설정합니다. 즉, 기간이 제대로 작동하려면 CheckedTextView를 사용해야합니다. "한 번만 플립 할 수있는 옵션이 없습니다"- 문서를 더 자세히 읽으십시오. 또는 http://github.com/commonsguy/cw-android/tree/master/Fancy/Flipper1/을 살펴보십시오. – CommonsWare

관련 문제