James A
James A

Reputation: 135

How to implement OnScrollistener in a fragment

I can't seem to get to implement/extend OnScrollistener for my recyclerview to know when the recyclerview hits the bottom

public class UpcomingFragment extends Fragment 

How do i implement it if:

implements RecyclerView.OnScrollListener

and

implements OnScrollListener

give me an "Interface expected here" error

My build gradle module:

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "company.com.movieapp"
    minSdkVersion 15
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
 }
}

Build grade project

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.2.3'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

}

Upvotes: 1

Views: 2655

Answers (2)

Matt Barrera
Matt Barrera

Reputation: 159

private final RecyclerView.OnScrollListener onScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(final RecyclerView recyclerView, final int newState) {
    // code
}

@Override
public void onScrolled(final RecyclerView recyclerView, final int dx, final int dy) {
    // code
}
};

then add the onScrollListener to the method addOnScrollListener like this

recyclerView.addOnScrollListener(onScrollListener);

Upvotes: 0

Jared Burrows
Jared Burrows

Reputation: 55527

Based on the docs:

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.OnScrollListener.html

RecyclerView.OnScrollListener is abstract.

Use the listener like this:

private final RecyclerView.OnScrollListener onScrollListener = new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(final RecyclerView recyclerView, final int newState) {
        // code
    }

    @Override
    public void onScrolled(final RecyclerView recyclerView, final int dx, final int dy) {
        // code
    }
};

Add to RecyclerView:

recyclerView.addOnScrollListener(onScrollListener);

Upvotes: 6

Related Questions