2017-03-01 2 views
0

TextViews을 포함하는 ListView을 표시하는 Fragment와 함께 Activity이 있습니다. 메뉴 항목은 인 텐트를 통해 다른 Activity을 트리거 할 수 있습니다. 새로운 ActivityListViewArrayAdapter에있는 ArrayList을 지우고 ArrayList.clear()을 사용합니다.안드로이드 ListView.getChildCount()보다 큰 getCount()

나는 ListView 내 원래에 새 Activity에서 백업 및 onResume()에 제어를 얻을, 내 ListView.getChildCount() 그것이 텐트로 인해 왼쪽 때와 동일한 것을 발견하지만, ListView.getCount()가 제대로 제로 !

어댑터의 clear() 메서드를 사용해 보았습니다. Adapter.notifyDataSetChanged() (시도 할 필요는 없지만)을 시도했습니다.

기본 내면 ArrayList을 조각 자체 내에서 수정하면 모두 잘된 것처럼 보입니다. 예를 들어, 요소를 클릭하면 제거, 위 또는 아래로 이동 등의 옵션이 제공됩니다. 정상적으로 작동합니다.

또한 목록 Activity을 종료하고 다시 돌아 오면 모두 정상입니다. 그래서 ArrayList는 같은 목록입니다. 나는 결코 새로운 목록을 만들지 않는다. clear() it.

하위 카운트가 기본 요소 수보다 어떻게 더 많을 수 있는지 알고 싶습니다. Activity이 일시 중지 되었기 때문에 ArrayList에 대한 일종의 옵저버가 트리거되지 않습니다. 어떤 경우에 어떻게 다시 동기화 할 수 있습니까? 예를 들어 invalidate()을 시도했습니다.

내가 해결 방법을 찾을 것 같다 API (23)

답변

-1

을 받고있다. 스레드 안전성을 논의하는 또 다른 게시물 here을 발견했습니다. 원래 UI에서 목록을 수정하지 않으면 의미가있는 것 같습니다. 그래서, 내 onResume()에서 방금 setAdapter()를 다시 수행했습니다. 동일한 어댑터와 목록 및 비올라로! 모두 잘 다시 보인다.

관련 문제