문제

각 항목에는 2 개의 선형 레이 아웃 (하나는 헤드를 호출하고 다른 하나는 본문)이있는 사용자 정의 배열 ADAPTER로 뒷받침 된 목록보기가 있습니다. 신체는 사용자가 줄을 클릭 할 때까지 숨겨져 있습니다. 두 번째 클릭 (머리)은 몸을 숨 깁니다. 그러나 사용자가 신체를 클릭하면 다른 활동이 제공됩니다. 이 모든 것이 잘 작동합니다. 여기에 문제가 있습니다.

사용자가 본문을 누르면 일반 목록 항목과 동일한 방식으로 동작을 시각적으로 표시하면 눌렀을 때 주황색 배경이 깜박입니다. (내 이론) Onpress 이벤트는 Body의 견해에 의해 차단되고 목록 항목에 의해 처리되지 않으므로 기본적으로 이것을 얻지 못합니다.

내가 시도한 첫 번째 일은 실행하는 것이 었습니다 body.setBackground('#ff00ff') Onpress 이벤트에서 (색상을 신경 쓰지 마십시오). 전화 후에 다시 칠할 수 없기 때문에 작동하지 않았습니다. 그런 다음 조금 더 파고 사용하기로 결정했습니다. <selector/>-기반 배경. 나는 정의했다 body_background.xml 안에 drawable 폴더 및 신체의 배경 속성에 할당했습니다.

그곳에서 나는 짝수가 목록에 의해 처리되는 경우에만 배경이 변할 것임을 알았습니다. 예를 들어 설정하면 <item android:state_selected="true" android:drawable="@drawable/selected"/> 그런 다음 머리를 누르면 두 요소 (머리와 신체)의 배경이 바뀌지 만 몸을 누르면 아무것도 없습니다.

그래서 내 질문을 요약하려면 - 사용자 정의 onclick 핸들러를 할당하면 목록 항목의 자식 요소의 배경을 어떻게 변경합니까? 모든 힌트는 크게 감사하겠습니다

도움이 되었습니까?

해결책

확인. 여기에 내가 파는 더 많은 정보가 있습니다.

  1. 현재 구현을 ExpandablElistView로 전환하려고합니다.이 기능은 (슬라이딩 바디)에서 코딩 해야하는 기능을 제공합니다. 내가 여기서 가질 수있는 문제는 멋진 "끝없는"목록 구현이 있고 Arrayadapter#을 사용하고 있다는 것입니다. androidguys.com의 튜토리얼) 글쎄, add 메소드가 누락되었습니다 BaseExpandableListAdapter 따라서 내부 배열에 항목을 추가하는 것이 작동하는지 (Arrayadapter의 경우에는 없음) ExpandablElistView#notifyChanged ()를 수행 할 수 있는지 확인해야합니다.
  2. 직접 사용할 때 아무것도 보지 못한다는 사실 setBackgroundColor 방법은 아마도 후속 호출 때문일 것입니다 startActivity 새로운 활동이 표시 될 때까지 모든 페인팅을 중단하는 전화

추신 : 이것은 expandablelistView로 전환하여 해결되었습니다. 그리고 추가 할 수 있습니다 - 아름답습니다! 아무것도 발명 할 필요가 없습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top