안드로이드에서 ListView를 처음 볼 수있는 방법을 얻을 수있는 방법이 있습니까?안드로이드에서 첫 번째 보이는보기를 얻는 방법 ListView
어댑터의 첫 번째보기를 백업하는 데이터를 얻을 수 있지만 ListView에서 첫 번째보기를 가져올 수없는 것으로 보입니다.
스크롤 작업이 끝난 후 첫 번째 보이는보기를 변경하고 싶습니다. 보기에 대한 참조를 저장해서는 안된다는 것을 알고 있습니다.
안드로이드에서 ListView를 처음 볼 수있는 방법을 얻을 수있는 방법이 있습니까?안드로이드에서 첫 번째 보이는보기를 얻는 방법 ListView
어댑터의 첫 번째보기를 백업하는 데이터를 얻을 수 있지만 ListView에서 첫 번째보기를 가져올 수없는 것으로 보입니다.
스크롤 작업이 끝난 후 첫 번째 보이는보기를 변경하고 싶습니다. 보기에 대한 참조를 저장해서는 안된다는 것을 알고 있습니다.
사실 ListView 항목은 ListView의 하위 항목입니다. 그래서 먼저 볼 수있는 ListView 항목은 다음과 같습니다
listView.getChildAt(0)
의 ListView가 표시되는 첫 번째보기를 얻을 수있는 기능 getFirstVisiblePosition
정도가, 코드는 다음과 같습니다 실제로
listView.getChildAt(listView.getFirstVisiblePosition());
childAt() 위치와 getFirstVisiblePosition()에 의해 반환되는 위치 사이에는 차이가 있습니다. getFirstVisiblePosition의 위치는 데이터 어댑터의 위치입니다. ChildAt는 순간에 listview에서 볼 수있는 뷰만 고려합니다. – Janusz
나는 대답이 마음에 들었고 뭔가 유용한 것을 발견하는 것이 유용하다는 것을 알았다. 그러나 어댑터 위치에서 childAt를 사용하면 작동하지 않습니다. fetFirstVisiblePosition을 사용하면 getItem을 사용하여 다시 어댑터에 전달해야합니다. 그래서 더 정확한 adapter.getItem (listview.getFirstVisiblePosition) 것입니다. 그러나이 경우 op가 요청한대로보기가 없습니다. 그럼에도 불구하고 이것을 지적 해 주셔서 감사합니다. –
listView.getChildAt(listView.getFirstVisiblePosition())
표시되는 첫 번째 항목을 제공
하지만 반값으로 표시 될 수 있습니다 목록 항목.
첫번째 완전히 보이는 목록 항목을 얻으려면,
if (listView.getChildAt(0).getTop() < 0) {
int firstCompletelyVisiblePos = listView.getFirstVisiblePosition() + 1;
}
다음과 같은 코드를 사용할 수 있습니다
for (int i = 0; i <= conversationListView.getLastVisiblePosition() - conversationListView.getFirstVisiblePosition(); i++) {
View listItem = conversationListView.getChildAt(i);
}
listView.scrollBy (0, -40);
매우 잘 작동합니다.
보기가 재활용되었습니다. 특정 견해에 대해 무엇이 필요합니까? –
제 질문을 편집합니다. 사용자가 목록을 스크롤 한 후에보기를 변경하려고합니다. – Janusz