From 9affd8498146d6efd331b8a9629f95ee3d4e1de6 Mon Sep 17 00:00:00 2001 From: houxg Date: Wed, 1 Mar 2017 17:34:41 +0800 Subject: [PATCH] code refactoring: extract pull-to-refresh --- .../leamonax/component/PullToRefresh.java | 33 +++++++++++++++++++ .../org/houxg/leamonax/ui/MainActivity.java | 33 ++++++++----------- 2 files changed, 47 insertions(+), 19 deletions(-) create mode 100644 app/src/main/java/org/houxg/leamonax/component/PullToRefresh.java diff --git a/app/src/main/java/org/houxg/leamonax/component/PullToRefresh.java b/app/src/main/java/org/houxg/leamonax/component/PullToRefresh.java new file mode 100644 index 0000000..8a3776e --- /dev/null +++ b/app/src/main/java/org/houxg/leamonax/component/PullToRefresh.java @@ -0,0 +1,33 @@ +package org.houxg.leamonax.component; + + +import android.support.v4.widget.SwipeRefreshLayout; + +import com.elvishew.xlog.XLog; + +public class PullToRefresh { + + private SwipeRefreshLayout refreshLayout; + private SwipeRefreshLayout.OnRefreshListener listener; + + public PullToRefresh(SwipeRefreshLayout refreshLayout, SwipeRefreshLayout.OnRefreshListener listener) { + this.listener = listener; + this.refreshLayout = refreshLayout; + refreshLayout.setOnRefreshListener(listener); + } + + public void forceRefresh() { + refreshLayout.postDelayed(new Runnable() { + @Override + public void run() { + XLog.i("fetching notes"); + refreshLayout.setRefreshing(true); + listener.onRefresh(); + } + }, 200); + } + + public void stopRefreshing() { + refreshLayout.setRefreshing(false); + } +} diff --git a/app/src/main/java/org/houxg/leamonax/ui/MainActivity.java b/app/src/main/java/org/houxg/leamonax/ui/MainActivity.java index 4bee64c..861b051 100644 --- a/app/src/main/java/org/houxg/leamonax/ui/MainActivity.java +++ b/app/src/main/java/org/houxg/leamonax/ui/MainActivity.java @@ -20,6 +20,7 @@ import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import org.houxg.leamonax.R; import org.houxg.leamonax.background.NoteSyncService; +import org.houxg.leamonax.component.PullToRefresh; import org.houxg.leamonax.model.Account; import org.houxg.leamonax.model.Note; import org.houxg.leamonax.model.Notebook; @@ -44,9 +45,8 @@ public class MainActivity extends BaseActivity implements Navigation.Callback { @BindView(R.id.drawer) View mNavigationView; - @BindView(R.id.swiperefresh) - SwipeRefreshLayout mSwipeRefresh; + PullToRefresh mPullToRefresh; Navigation mNavigation; public static Intent getOpenIntent(Context context, boolean shouldReload) { @@ -77,31 +77,26 @@ public class MainActivity extends BaseActivity implements Navigation.Callback { mNoteFragment = (NoteFragment) getSupportFragmentManager().findFragmentByTag(TAG_NOTE_FRAGMENT); } - mSwipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { - @Override - public void onRefresh() { - syncNotes(); - } - }); + mPullToRefresh = new PullToRefresh( + (SwipeRefreshLayout) findViewById(R.id.swiperefresh), + new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + syncNotes(); + } + }); EventBus.getDefault().register(this); if (shouldReload) { - mSwipeRefresh.postDelayed(new Runnable() { - @Override - public void run() { - XLog.i("fetching notes"); - mSwipeRefresh.setRefreshing(true); - syncNotes(); - } - }, 200); + mPullToRefresh.forceRefresh(); } } private void syncNotes() { if (!NetworkUtils.isNetworkAvailable()) { ToastUtils.showNetworkUnavailable(MainActivity.this); - mSwipeRefresh.setRefreshing(false); + mPullToRefresh.stopRefreshing(); return; } NoteSyncService.startServiceForNote(MainActivity.this); @@ -176,7 +171,7 @@ public class MainActivity extends BaseActivity implements Navigation.Callback { account.updateLastUseTime(); account.update(); mNavigation.refresh(); - mSwipeRefresh.setRefreshing(true); + mPullToRefresh.stopRefreshing(); syncNotes(); return true; } @@ -216,7 +211,7 @@ public class MainActivity extends BaseActivity implements Navigation.Callback { @Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(SyncEvent event) { XLog.i("RequestNotes rcv: isSucceed=" + event.isSucceed()); - mSwipeRefresh.setRefreshing(false); + mPullToRefresh.stopRefreshing(); if (event.isSucceed()) { mNavigation.refresh(); } else {