使用
implementation ‘com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.42’
添加头布局
一、首页 One.java 主布局
<com.scwang.smartrefresh.layout.SmartRefreshLayout
xmlns:android=“http://schemas.android.com/apk/res/android”
android:id="@+id/smart_fresh"
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
<android.support.v7.widget.RecyclerView
android:id="@+id/recy_view"
android:layout_width=“match_parent”
android:layout_height=“match_parent”></android.support.v7.widget.RecyclerView>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
二、首页链接
1.
public class Api {
public static final String ALL=“https://www.zhaoapi.cn/”;
public static final String LoginAll=“http://172.17.8.100/movieApi/”;
public static final String REGISTER=“http://172.17.8.100/movieApi/”;
}
2.
public interface ApiAll {
@GET(“home/getHome”)
Observable shouye();
}
三、首页契约层
import io.reactivex.Observable;//正确的包
public interface ShouContract {
//presenter
abstract class ShouPresenter extends BasePresenter<ShouModel,ShouView>{
@Override
public ShouModel getmModel() {
return new ShouModel();
}
public abstract void select();
}
//model接口
interface ShouYModel extends IBaseModel{
Observable<ShouEntity> ShouQuary();
}
public interface ShouView{
void success(ShouEntity shouEntity);
void failure(String error);
}
}
四、首页model
import io.reactivex.Observable;
public class ShouModel implements ShouContract.ShouYModel{
@Override
public Observable<ShouEntity> ShouQuary() {
return RetrofitUtils.getInstance().createApi(Api.ALL, ApiAll.class)
.shouye().subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread());
}
}
五、首页p层
public class ShouYePresenter extends ShouContract.ShouPresenter {
@Override
public void select() {
mModel.ShouQuary().subscribe(new Consumer<ShouEntity>() {
@Override
public void accept(ShouEntity shouEntity) throws Exception {
mView.success(shouEntity);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
mView.failure("网络异常");
}
});
}
}
六、首页 fragment (One.java )
public class One extends BaseMvpFragment<ShouContract.ShouYModel,ShouContract.ShouPresenter> implements ShouView {
private List<ShouEntity.DataBean.MiaoshaBean> list= new ArrayList<>();
private ArrayList<String> images= new ArrayList<>();
private int page=1;
@BindView(R.id.recy_view)
RecyclerView recy_view;
@BindView(R.id.smart_fresh)
SmartRefreshLayout smart_fresh;
private CustomBanner banner;
private TextView time_item;
private ShowAdapter showAdapter;
@Override
protected int bindLayoutId() {return R.layout.one; }
@Override
protected void initData() {
super.initData();
GetData();//请求数据
setSmart();//刷新样式
time(list); //秒杀
}
//秒杀
private void time(final List<ShouEntity.DataBean.MiaoshaBean> shouEntity) {
time_item = findActivityViewById(R.id.time_item);
Observable.interval(1,TimeUnit.SECONDS).observeOn(AndroidSchedulers.mainThread())
.doOnNext(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
System.out.print("llll"+aLong);
}
});
}
private void settime(List<ShouEntity.DataBean.MiaoshaBean> shouEntity) {
List<Long> list =new ArrayList<>();
Calendar calendar = Calendar.getInstance();
for (int i = 0; i < shouEntity.size(); i++) {
long times=shouEntity.get(i).getTime();
list.add(times);
}
String s = list.toString();
long l = Long.parseLong(s);
calendar.setTimeInMillis(l);
int hour=calendar.get(Calendar.HOUR_OF_DAY);
int minute=calendar.get(Calendar.MINUTE);
int second=calendar.get(Calendar.SECOND);
String t=hour+":"+minute+":"+second;
time_item.setText(t);
}
//请求数据
private void GetData() {
presenter.select();
}
//刷新格式
private void setSmart() {
//设置 Header 为 贝塞尔雷达 样式
smart_fresh.setRefreshHeader(new BezierRadarHeader(getActivity()).setEnableHorizontalDrag(true));
//设置 Footer 为 球脉冲 样式
smart_fresh.setRefreshFooter(new BallPulseFooter(getActivity()).setSpinnerStyle(SpinnerStyle.Scale));
smart_fresh.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
GetData();
}
});
smart_fresh.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
GetData();
}
});
}
//p层
@Override
public BasePresenter initPresenter() {
return new ShouYePresenter();
}
@Override
public void showLoading() { }
@Override
public void hideLoading() {}
@Override
public void fail(String msg) {}
//请求数据成功
@Override
public void success(final ShouEntity shouEntity) {
ShouEntity.DataBean.MiaoshaBean miaosha = shouEntity.getData().getMiaosha();
list.add(miaosha);
//获取数据
final List<ShouEntity.DataBean.TuijianBean.ListBeanX> tuijian = shouEntity.getData().getTuijian().getList();
//推荐类
recy_view.setLayoutManager(new GridLayoutManager(getActivity(),2));
showAdapter = new ShowAdapter(R.layout.one_item1,tuijian);
recy_view.setAdapter(showAdapter);
//点击跳转详情页
showAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
ShouEntity.DataBean.TuijianBean.ListBeanX tuijian1 = tuijian.get(position);
EventBus.getDefault().postSticky(tuijian1);
Intent intent = new Intent(getActivity(), ProjectActivity.class);
startActivity(intent);
}
});
//轮播图类
/*加载banner 图片*/
View headview = getLayoutInflater().inflate(R.layout.banner_item, (ViewGroup) recy_view.getParent(), false);
banner = headview.findViewById(R.id.banner);
showAdapter.addHeaderView(headview);
for (int i = 0; i < shouEntity.getData().getBanner().size(); i++) {
String icon = shouEntity.getData().getBanner().get(i).getIcon();
images.add(icon);
}
setBean(images);
//分类-九宫格
View fenleiView = getLayoutInflater().inflate(R.layout.fenlei_layout, (ViewGroup) recy_view.getParent(), false);
RecyclerView one_fenlei_recyclerview = fenleiView.findViewById(R.id.felei_layout_view);
showAdapter.addHeaderView(fenleiView);
/*分类的 操作*/
one_fenlei_recyclerview.setLayoutManager(new GridLayoutManager(getActivity(),2, LinearLayoutManager.HORIZONTAL,false));
FenleiAdapter fenleiAdapter = new FenleiAdapter(R.layout.fenlei_item, shouEntity.getData().getFenlei());
one_fenlei_recyclerview.setAdapter(fenleiAdapter);
//秒杀轮询
View time_layout = getLayoutInflater().inflate(R.layout.time_layout, (ViewGroup) recy_view.getParent(), false);
showAdapter.addHeaderView(time_layout);
View text_layout = getLayoutInflater().inflate(R.layout.text_layout, (ViewGroup) recy_view.getParent(), false);
showAdapter.addHeaderView(text_layout);
}
@Override
public void failure(String error) {}
//加载轮播图片
private void setBean(final ArrayList<String> beans) {
banner.setPages(new CustomBanner.ViewCreator<String>() {
@Override
public View createView(Context context, int position) {
ImageView imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
return imageView;
}
@Override
public void updateUI(Context context, View view, int position, String entity) {
Glide.with(context).load(entity).into((ImageView) view);
}
}, beans).startTurning(2000);
}
}
七、首页主适配器 ——ShowAdapter
public class ShowAdapter extends BaseQuickAdapter<ShouEntity.DataBean.TuijianBean.ListBeanX,BaseViewHolder> {
private Context context;
private List<ShouEntity.DataBean.TuijianBean.ListBeanX> list;
public ShowAdapter(int layoutResId, @Nullable List<ShouEntity.DataBean.TuijianBean.ListBeanX> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, ShouEntity.DataBean.TuijianBean.ListBeanX item) {
helper.setText(R.id.item_title,item.getTitle());
helper.setText(R.id.item_price,item.getBargainPrice());
String[] split = item.getImages().split("\\|");
SimpleDraweeView view = helper.getView(R.id.item_sdv);
view.setImageURI(split[0]);
}
}
八、首页 分类(九宫格) 的适配器——FenleiAdapter
public class FenleiAdapter extends BaseQuickAdapter<ShouEntity.DataBean.FenleiBean,BaseViewHolder> {
public FenleiAdapter(int layoutResId, @Nullable List<ShouEntity.DataBean.FenleiBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, ShouEntity.DataBean.FenleiBean item) {
helper.setText(R.id.fenlei_item_text,item.getName());
SimpleDraweeView fenlei_item_sdv = helper.getView(R.id.fenlei_item_sdv);
fenlei_item_sdv.setImageURI(item.getIcon());
}
}