仿京东首页

使用
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());
}

}

猜你喜欢

转载自blog.csdn.net/qq_42993958/article/details/82831273