| | |
| | | package com.runt.open.mvvm.base.activities; |
| | | |
| | | import android.view.MotionEvent; |
| | | import android.view.View; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.lifecycle.Observer; |
| | | import androidx.recyclerview.widget.LinearLayoutManager; |
| | |
| | | import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener; |
| | | |
| | | import java.lang.reflect.ParameterizedType; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 含有上拉刷新的Activity |
| | | * 继承此类,有效优化代码60行 |
| | | * 试用于 有下拉刷新,上拉加载等分页需求的界面 |
| | | * Created by Administrator on 2021/11/4 0004. |
| | | */ |
| | | public abstract class LoadPageActivity<VB extends ViewBinding,VM extends LoadPageViewModel,A extends BaseAdapter,RESULT> |
| | |
| | | //适配器 |
| | | protected A adapter; |
| | | |
| | | protected String initTitle(){return null;} |
| | | |
| | | @Override |
| | | public void initViews() { |
| | | if(initTitle() != null) { |
| | | setTitle(initTitle()); |
| | | } |
| | | try { |
| | | Class<A> entityClass = (Class<A>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[2]; |
| | | this.adapter = entityClass.newInstance();//实例化泛型 |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | refresh = mBinding.getRoot().findViewById(R.id.refresh); |
| | | refresh.setRefreshHeader(new ClassicsHeader(mContext)); |
| | | refresh.setRefreshFooter(new ClassicsFooter(mContext)); |
| | | refresh.setOnRefreshLoadMoreListener(this); |
| | | RecyclerView recycler = mBinding.getRoot().findViewById(R.id.recycler); |
| | | recycler.setLayoutManager(new LinearLayoutManager(mContext)); |
| | | recycler.setAdapter(adapter); |
| | | refresh = mBinding.getRoot().findViewById(R.id.refresh); |
| | | refresh.setOnRefreshLoadMoreListener(this); |
| | | mViewModel.getLiveData().observe(this, (Observer<List<RESULT>>) list -> { |
| | | adapter.showNull = true; |
| | |
| | | refresh.autoRefresh(); |
| | | } |
| | | |
| | | protected abstract Map requestParams(); |
| | | /** |
| | | * 参数 |
| | | * @return |
| | | */ |
| | | protected Map requestParams() { |
| | | return new HashMap(); |
| | | } |
| | | |
| | | @Override |
| | | public void onRefresh(@NonNull RefreshLayout refreshLayout) { |
| | |
| | | mViewModel.requestData(page,requestParams()); |
| | | } |
| | | |
| | | |
| | | public A getAdapter() { |
| | | return adapter; |
| | | } |