ListView utrzymuje wiersze uporządkowane na liście z góry, do której można uzyskać dostęp za pomocą getChildAt()
. Więc to, czego chcesz, jest całkiem proste. Chodźmy pierwszy i ostatni Widoki, a następnie sprawdzić, czy są one całkowicie widoczne lub nie:
// getTop() and getBottom() are relative to the ListView,
// so if getTop() is negative, it is not fully visible
int first = 0;
if(listView.getChildAt(first).getTop() < 0)
first++;
int last = listView.getChildCount() - 1;
if(listView.getChildAt(last).getBottom() > listView.getHeight())
last--;
// Now loop through your rows
for(; first <= last; first++) {
// Do something
View row = listView.getChildAt(first);
}
Dodawanie
Teraz chcę dostać indeks wyłączyć wszystkie elementy, które są w pełni widoczne
Nie jestem pewien, co oznacza to zdanie. Jeżeli powyższy kod nie jest indeksem chciałeś można użyć:
int first = listView.getFirstVisiblePosition();
if(listView.getChildAt(0).getTop() < 0)
first++;
Aby mieć indeks, który jest w stosunku do adaptera (tj. adapter.getItem(first)
)
Nieważne co powiedziałem :) – Luksprog
@Luksprog Bez obaw. – Sam
listView.getChildAt (index) .getTop() podstępna praca dla mnie..dzięki – CoDe