2011-09-15 6 views
3

대소 문자 : 나는 다양한 ListItems (예 : 20)로 ListView를 가지고 있습니다. 처음 0-6 항목이 보입니다. 이제 사용자는 목록을 아래로 스크롤하고 항목 nr을 클릭합니다. 15. 새로운 활동이 시작되고, 어떤 시점에서 사용자가 뒤로 버튼을 누릅니다. 이제 항목 nr. 15가 동일한 위치에 있거나 위치가 변경되었거나 삭제되었을 수 있습니다 (삭제 된 상황 처리는 문제가 아닙니다). 다른 두 상황은 목록이 다시 채워지는 방법을 제외하고는 동등한 동작을 보입니다 (문제가 아님). 을 항목 NR에서 ListView에 복귀시 : 내가하고 싶은 무엇보이지 않는 ListItem의 위치 가져 오기

. 15, setResult 및 onActivityResult 사용하여 항목에 대한 ID 저장 한 및 ListView 항목으로 다시 채워집니다. (문제의 항목은 여기에서 15 번째로, 다시 채우기 후에 목록에 표시됩니다)

그런 다음 목록을 항목 nr의 위치로 스크롤하고 싶습니다. 15, 아이템 nr 만들기. 15 ListView의 첫 번째 보이는 항목.

하는 것은 문제 : 원하는 항목을보기에서 수도로, 내 문제가 해결되지 않는 방법 getChildCount()getChildAt(index)를 사용

  • 은 (목록의 표시 만의 데이터 코어에서하지 listadapter).
  • getChildCount() 대신 getCount() 메서드를 사용하면 목록에있는 항목의 수가 적지 만 for 루프의 항목을 실행하자마자 index >= getChildCount() 일 때 NullPointerException이 발생합니다.

내 질문 :

  • 어떻게 (목록 또는 보이지)의 모든 항목을 실행하고 내 요구 사항을 충족하는 항목을 찾을 때, 해당 항목을 첫 번째를 만드는 목록보기를 스크롤 할 수 있습니다 보이는 항목? 이상

답변

2

당신은 반복 할 수 귀하의 ListAdapter 당신이 다음 ListView.smoothScrollToPosition(int position)에 인수로 현재 위치를 사용, 원하는 ID를 가진 개체를 찾을 때까지 int getCount()Object getItem(int position)를 사용하여.

매우 효율적이지는 않지만 원하는 효과가 있어야합니다.

+0

이렇게하면 문제가 부분적으로 해결되고 원하는보기가 보이는 항목 중 하나가됩니다. 나는 그것이 첫 번째 보이는 항목이되고 싶습니다. – kaspermoerch

+1

'smoothScrollToPosition (index) '대신'setSelectionFromTop (index + 1, 0)'을 사용하여 원하는 효과를 얻었습니다. – kaspermoerch

+0

@KasperMoerch : setSelectionFromTop도 사용했지만 스크롤이 부드럽게 진행되지 않습니다. 이걸 제안 해주세요. 여기 이걸 도와주세요. http://stackoverflow.com/questions/15133654/achieve-smooth-scrolling-on-list- 전망 – Shruti

관련 문제