Oto ona:
public class myScrollView extends ScrollView
{
public myScrollView(Context context)
{
super(context);
}
public myScrollView(Context context, AttributeSet attributeSet)
{
super(context,attributeSet);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt)
{
View view = (View)getChildAt(getChildCount()-1);
int d = view.getBottom();
d -= (getHeight()+getScrollY());
if(d==0)
{
//you are at the end of the list in scrollview
//do what you wanna do here
}
else
super.onScrollChanged(l,t,oldl,oldt);
}
}
można użyć myScrollView w układzie xML lub oznacz ją w yo kod ur. Podpowiedź: z powyższym kodem, jeśli użytkownik trafi na koniec listy 10 razy częściej, Twój kod będzie działał 10 razy. W niektórych przypadkach, gdy chcesz załadować dane ze zdalnego serwera, aby zaktualizować listę, zachowanie to byłoby niepożądane (najprawdopodobniej). spróbuj przewidzieć niepożądaną sytuację i ich unikać.
Wskazówka 2: czasami zbliżanie się do końca listy może być właściwym momentem na uruchomienie skryptu. na przykład użytkownik czyta listę artykułów i zbliża się do końca. wtedy zaczniesz ładować więcej zanim zakończy się lista. Aby to zrobić, po prostu to zrobić, aby spełnić swój cel:
if(d<=SOME_THRESHOLD) {}
Jako że ScrollView może mieć tylko jedno dziecko, jeśli masz pewność, że istnieje jeden: , jeśli (scrollView.getScrollY() + scrollView.getHeight()> = scrollView.getChildAt (0) .getMeasuredHeight()) {/ * zostały przewinięte do dołu * /} – Tom
Czy zostało to umieszczone w metodzie? jak ten kod został wdrożony? –
@ItzHoudini Zrobiłem to jako ogólne, jak to możliwe, więc możesz go używać w dowolny sposób. – sanna