Pike D.
Pike D.

Reputation: 691

Methods aren't having an effect on a SwipeRefreshLayout

Every method I use on the SwipeRefreshLayout doesn't have an effect on it. I have quite new to Java, so it might have been how I have been defining my variables.

Here is my onCreate():

 public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        SharedPreferences pref = getSharedPreferences("application_settings", MODE_PRIVATE);
        Boolean darkTheme = (pref.getBoolean("DarkTheme", false));
        if(darkTheme == false){
           setTheme(R.style.AppTheme);
        }
        else{
           setTheme(R.style.DarkAppTheme);
        }
        setContentView(R.layout.activity_main);
        .
        .
        .
       final SwipeRefreshLayout test = (SwipeRefreshLayout) findViewById(R.id.swiperefresh);
        if (darkTheme == true) {
            test.setColorSchemeResources(R.color.grey_check);
        }
        else{
            test.setColorSchemeResources(R.color.colorPrimary);
        }
        test.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

            @Override
            public void onRefresh() {
                test.setRefreshing(true);
                OnSwipe();
            }
        });
   }

and here is my OnSwipe() method:

public void OnSwipe(){
      mRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swiperefresh);
      .
      . // Some data processing
      .       
      mRefreshLayout.setRefreshing(false);

Whenever I use a method to affect its state, nothing happens except for the icon to show up. It will not stop showing the refresh icon.

Upvotes: 0

Views: 37

Answers (1)

ACAkgul
ACAkgul

Reputation: 188

edit: I read your question quickly 5 mins ago, I edit the answer:

You should set this as global variable:

SwipeRefreshLayout test;

then in onCreate(), set it like this:

test = (SwipeRefreshLayout) findViewById(R.id.swiperefresh);

after these 2 steps, you can use it like this:

test.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            test.setRefreshing(true);
            OnSwipe();
        }
    });

and onSwipe():

public void OnSwipe(){
  .
  . // Some data processing
  .       
  test.setRefreshing(false);
}

Upvotes: 1

Related Questions