重构封装SwipeRefreshLayout,实现同业务多页面复用,提高开发和维护效率, 让开发变得更简洁方便,让维护变得省心省时。
直接上代码。
1. MySwipeRefreshLayout.class
/** * @Author: rhj * @CreateDate: 2021/1/13 19:19 * @Version: 1.0.0 * @Description: 自定义刷新控件 */ public class MySwipeRefreshLayout { private String TAG = MySwipeRefreshLayout.class.getSimpleName(); private WeakReference<AppCompatActivity> weakReference; private SwipeRefreshLayout mSwipeRefreshLayout; private MyRefreshInterface mMyRefreshInterface; public void initMySwipeRefreshLayout(AppCompatActivity activity , int viewId){ if (activity == null){ return; } weakReference = new WeakReference<>(activity); // setContextView(weakReference.get()); mSwipeRefreshLayout = weakReference.get().findViewById(viewId); initSwipeRefreshLayout(); } public void initMySwipeRefreshLayout(AppCompatActivity activity , SwipeRefreshLayout swipeRefreshLayout){ if (activity == null){ return; } weakReference = new WeakReference<>(activity); // setContextView(weakReference.get()); mSwipeRefreshLayout = swipeRefreshLayout; initSwipeRefreshLayout(); } private void initSwipeRefreshLayout() { if (mSwipeRefreshLayout == null){ return; } // 设置下拉进度的背景颜色,默认就是白色的 mSwipeRefreshLayout.setProgressBackgroundColorSchemeResource(android.R.color.white); // 设置下拉进度的主题颜色 mSwipeRefreshLayout.setColorSchemeResources(R.color.purple_200, R.color.purple_700, R.color.teal_700); // mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary, R.color.colorPrimaryDark); mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { Log.e(TAG, "刷新数据 --------------------------------------- "); if (mMyRefreshInterface != null) { mMyRefreshInterface.onRefresh(); } new Handler().postDelayed(new Runnable() { // new Handler(Objects.requireNonNull(Looper.myLooper())).postDelayed(new Runnable() { @Override public void run() { mSwipeRefreshLayout.setRefreshing(false); if (mMyRefreshInterface != null) { mMyRefreshInterface.setRefreshing(false); } } }, 2000); } }); } public void setRefreshing(boolean b){ if (mSwipeRefreshLayout != null) { mSwipeRefreshLayout.setRefreshing(b); } if (mMyRefreshInterface != null) { mMyRefreshInterface.setRefreshing(b); } } public void setmMyRefreshInterface(MyRefreshInterface mMyRefreshInterface) { this.mMyRefreshInterface = mMyRefreshInterface; } }
2.
MainActivityA.class
/** * @Author: rhj * @CreateDate: 2021/1/19 9:44 * @Version: 1.0.0 * @Description: */ public class MainActivityA extends AppCompatActivity { private String TAG = MainActivityA.class.getS