ListView
은 TabHost
안에 있습니다. 네 개의 다른보기를 목록에 반환하는 사용자 정의 CursorAdapter
이 있습니다. 4 가지 유형 중 하나는 SD 또는 자산 폴더에서 가져온 이미지입니다. 원래는 CursorAdapter
에서 이미지를로드하고 있었기 때문에 각 이미지가로드되는 동안 UI 스레드가 멈추었을 것이므로 코드를 AsyncTask
으로 옮겼습니다.asynctask에서 행로드가 커지면 ListView의 크기가 조정되지 않습니다.
이 항목은 모두 매우 짧은 항목 목록이 반환되는 경우를 제외하고는 모두 작동합니다. 이 경우 이미지가로드 된 후 ListView
의 크기가 다시 조정되지 않고 맨 위에있는 화면의 작은 부분 만 스크롤 할 수 있습니다.
listView
을 다시 레이아웃으로 가져 오는 방법을 알 수 없습니다. 뷰에서 자체 재개 호출 및 무효화가 작동하지 않습니다. View의 부모를 찾으려고하면 null이 반환됩니다. 기본 ListFragment 레이아웃은 이미 높이를 "Match_Parent"로 설정합니다. onCreateView의 레이아웃을 수동으로 모든 높이가 "Match_Parent"로 설정된 레이아웃으로 설정해도 수정되지 않습니다. notifyDataSetChanged()
을 호출하기 위해 어댑터 자체를 전달하면 루프가 발생하고 ListView
의 크기가 조정되지 않습니다.
내가 탭을 변경하면보기가 새 탭이 그 위에 그려지기 직전에 올바르게 깜박입니다. 매우 때로는 장치를 회전하거나 탭 사이를 가볍게 치면 올바르게 렌더링되지만 대부분의 경우 렌더링되지 않습니다.
디버깅 목적으로 다양한 재 레이아웃 명령을 onListItemClick에 추가하여 ListView.relayout()을 호출 할 때가끔 문제가 해결되지만 종종 그렇지 않은 것으로 나타났습니다. 왼쪽에
무엇이 누락 되었습니까? ListView
또는 현재 탭을 표시하거나 화면 전체를 다시 그릴 수있는 방법이 있습니까?
비슷한 문제가 발견되었지만 항목보기가 올바르게 레이아웃되지 않은 경우 RelativeLayout을 사용합니다. 컨트롤을 그룹화하면 이미지가 보이고 이미지 자체는 LinearLayout에서 미리 이미지 크기를 쿼리 할 필요없이 문제를 해결했습니다 (SDK는 14). – cbuchart
감사합니다. ImageView는 현재 RelativeLayout의 일부입니다. 나는 그것을 다시 방문 할 때 LinearLayout으로 바꿀 수 있으므로 결국에는 그것이 나오는 방식을별로 좋아하지 않습니다. 모든 이미지 크기를 데이터베이스에 저장할 필요없이 이미지에 대한 이중 액세스를 제거하는 것이 좋습니다. – Andrew