1. 程式人生 > >京東首頁

京東首頁

定義一個介面HomPageContract

public interface HomPageContract {

    interface View extends BaseContract.BaseView{

        void getAdSuccess(AdBean adBean);

        void getCatagorySuccess(CatagoryBean catagoryBean);
    }

    interface Presenter extends BaseContract.BasePresenter<View>{
        void 
getAd(); void getCatagory(); } }

寫一個HomePagePresenter類

public class HomePagePresenter extends BasePresenter<HomPageContract.View> implements HomPageContract.Presenter {
    private AdApi adApi;
    private CatagoryApi catagoryApi;

    @Inject
public HomePagePresenter(AdApi adApi, CatagoryApi catagoryApi) {
        this
.adApi = adApi; this.catagoryApi = catagoryApi; } @Override public void getAd() { adApi.getAd() .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(new Observer<AdBean>() { @Override
public void onSubscribe(Disposable d) { } @Override public void onNext(AdBean adBean) { mView.getAdSuccess(adBean); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } @Override public void getCatagory() { catagoryApi.getCatagory() .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(new Observer<CatagoryBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(CatagoryBean catagoryBean) { mView.getCatagorySuccess(catagoryBean); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } }

主頁面

public  class HomePageFragment extends BaseFragment<HomePagePresenter> implements HomPageContract.View {
    private Banner banner;
    private RecyclerView rvClass;
    private MarqueeView marqueeView;
    private RecyclerView rvSecKill;
    private RecyclerView rvRecommend;
    private ImageView ivZxing;
    @Override
public int getContentLayout() {
        return R.layout.fragment_home;
    }

    @Override
public void inject() {

        DaggerHttpComponent.builder()
                .httpModule(new HttpModule())
                .build()
                .inject(this);
    }

    @Override
public void initView(View view) {
        marqueeView = view.findViewById(R.id.marqueeView);
        List<String> info = new ArrayList<>();
        info.add("1. 大家好,我是孫福生。");
        info.add("2. 歡迎大家關注我哦!");
        info.add("3. GitHub帳號:sfsheng0322");
        info.add("4. 新浪微博:孫福生微博");
        info.add("5. 個人部落格:sunfusheng.com");
        info.add("6. 微信公眾號:孫福生");
        marqueeView.startWithList(info);

        banner = (Banner) view.findViewById(R.id.banner);
        rvClass = view.findViewById(R.id.rvClass);
        //設定佈局管理器
GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 2, RecyclerView.HORIZONTAL, false);
        rvClass.setLayoutManager(gridLayoutManager);

        rvSecKill = view.findViewById(R.id.rvSecKill);
        //設定佈局管理器
GridLayoutManager gridLayoutManager1 = new GridLayoutManager(getContext(), 1, RecyclerView.HORIZONTAL, false);
        rvSecKill.setLayoutManager(gridLayoutManager1);

        //設定佈局管理器
rvRecommend = view.findViewById(R.id.rvRecommend);
        GridLayoutManager gridLayoutManager2 = new GridLayoutManager(getContext(), 2, RecyclerView.VERTICAL, false);
        rvRecommend.setLayoutManager(gridLayoutManager2);

        //設定圖片載入器
banner.setImageLoader(new GlideImageLoader());

        //二維碼
ivZxing = view.findViewById(R.id.ivZxing);

        ivZxing.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {
                Intent intent = new Intent(getContext(), CaptureActivity.class);
                startActivityForResult(intent, 1);
            }
        });
        //請求資料
initData();
    }

    private void initData() {
        mPresenter.getAd();
        mPresenter.getCatagory();
    }

    @Override
public void getAdSuccess(final AdBean adBean) {
        List<AdBean.DataBean> data = adBean.getData();
        List<String> images = new ArrayList<>();
        for (int i = 0; i < data.size(); i++) {
            images.add(data.get(i).getIcon());
        }
        //設定圖片集合
banner.setImages(images);
        //banner設定方法全部呼叫完畢時最後呼叫
banner.start();

        RvSecKillAdapter rvSecKillAdapter = new RvSecKillAdapter(getActivity(), adBean.getMiaosha().getList());
        rvSecKill.setAdapter(rvSecKillAdapter);

        rvSecKillAdapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
public void onItemClick(int position) {
                //跳轉顯示詳情
//獲取地址
String detailUrl = adBean.getMiaosha().getList().get(position).getDetailUrl();
                Intent intent = new Intent(getContext(), WebViewActivity.class);
                intent.putExtra("detailUrl", detailUrl);
                startActivity(intent);
            }

            @Override
public void onLongItemClick(int position) {

            }
        });

        RvRecommendAdapter rvRecommendAdapter = new RvRecommendAdapter(getActivity(), adBean.getTuijian().getList());
        rvRecommend.setAdapter(rvRecommendAdapter);
    }

    @Override
public void onDestroy() {
        super.onDestroy();
        //結束輪播
banner.stopAutoPlay();
    }



    public void getCatagorySuccess(CatagoryBean catagoryBean) {

        final List<CatagoryBean.DataBean> data = catagoryBean.getData();
        RvClassAdapter rvClassAdapter = new RvClassAdapter(getContext(),data);
        rvClass.setAdapter(rvClassAdapter);
        rvClassAdapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
public void onItemClick(int position) {
                Toast.makeText(getContext(), data.get(position).getName(), Toast.LENGTH_SHORT).show();
            }

            @Override
public void onLongItemClick(int position) {

            }
        });
    }


}

    寫一個介面卡RvClassAdapter

public class RvClassAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private List<CatagoryBean.DataBean> list;
    private LayoutInflater inflater;
    private OnItemClickListener onItemClickListener;

    public RvClassAdapter(Context context, List<CatagoryBean.DataBean> list) {
        this.context = context;
        this.list = list;
        inflater = LayoutInflater.from(context);
    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener){
        this.onItemClickListener = onItemClickListener;
    }



    @NonNull
    @Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.rvclass_item, parent, false);
        ClassViewHoler classViewHoler = new ClassViewHoler(view);
        return classViewHoler;
    }

    @Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {

        ClassViewHoler classViewHoler = (ClassViewHoler) holder;
        CatagoryBean.DataBean dataBean = list.get(position);
        classViewHoler.iv.setImageURI(dataBean.getIcon());
        classViewHoler.tv.setText(dataBean.getName());

        classViewHoler.ll.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View view) {
                if (onItemClickListener != null) {
                    onItemClickListener.onItemClick(position);
                }
            }
        });
    }

    @Override
public int getItemCount() {
        return list.size();
    }

    class ClassViewHoler extends RecyclerView.ViewHolder{
        private final SimpleDraweeView iv;
        private final TextView tv;
        private final LinearLayout ll;
        public ClassViewHoler(View itemView) {
            super(itemView);
            iv = itemView.findViewById(R.id.iv);
            tv = itemView.findViewById(R.id.tv);
            ll = itemView.findViewById(R.id.ll);
        }
    }
}
RvRecommendAdapter介面卡
public class RvRecommendAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private List<AdBean.TuijianBean.ListBean> list;
    private LayoutInflater inflater;
    private OnItemClickListener onItemClickListener;

    public RvRecommendAdapter(Context context, List<AdBean.TuijianBean.ListBean> list) {
        this.context = context;
        this.list = list;
        inflater = LayoutInflater.from(context);
    }

    @NonNull
    @Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.rvrecommend_item, parent, false);
        RecommendViewHolder recommendViewHolder = new RecommendViewHolder(view);
        return recommendViewHolder;
    }

    @Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        RecommendViewHolder recommendViewHolder = (RecommendViewHolder) holder;
        AdBean.TuijianBean.ListBean listBean = list.get(position);
        String images = listBean.getImages();
        String[] split = images.split("\\|");
        String url = split.length == 0 ? images : split[0];
        recommendViewHolder.iv.setImageURI(url);
        recommendViewHolder.tv.setText(listBean.getTitle());

    }

    @Override
public int getItemCount() {
        return list.size();
    }

    class RecommendViewHolder extends RecyclerView.ViewHolder {

        private final SimpleDraweeView iv;
        private final TextView tv;

        public RecommendViewHolder(View itemView) {
            super(itemView);
            iv = itemView.findViewById(R.id.iv);
            tv = itemView.findViewById(R.id.tv);
        }
    }

}

RvSecKillAdapter介面卡
public class RvSecKillAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private List<AdBean.MiaoshaBean.ListBeanX> list;
    private LayoutInflater inflater;
    private OnItemClickListener onItemClickListener;

    public RvSecKillAdapter(Context context, List<AdBean.MiaoshaBean.ListBeanX> list) {
        this.context = context;
        this.list = list;
        inflater = LayoutInflater.from(context);
    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener){
        this.onItemClickListener = onItemClickListener;
    }

    @NonNull
    @Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.rvseckill_item, parent, false);
        SecKillViewHolder secKillViewHolder = new SecKillViewHolder(view);
        return secKillViewHolder;
    }

    @Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
        SecKillViewHolder secKillViewHolder = (SecKillViewHolder) holder;
        AdBean.MiaoshaBean.ListBeanX listBeanX = list.get(position);
        String url = listBeanX.getImages().split("\\|")[0];
        secKillViewHolder.iv.setImageURI(url);
        secKillViewHolder.iv.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {
                if (onItemClickListener!=null){
                    onItemClickListener.onItemClick(position);
                }
            }
        });
    }

    @Override
public int getItemCount() {
        return list.size();
    }

    class SecKillViewHolder extends RecyclerView.ViewHolder{

        private final SimpleDraweeView iv;

        public SecKillViewHolder(View itemView) {
            super(itemView);
            iv = itemView.findViewById(R.id.iv);
        }
    }
}
介面卡佈局

rvclass_item

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:gravity="center"
android:orientation="vertical">

    <com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/iv"
android:layout_width="50dp"
android:layout_height="50dp"/>

    <TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</LinearLayout>
rvrecommend_item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp">

    <com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/iv"
android:layout_width="200dp"
android:layout_height="200dp"/>

    <TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</LinearLayout>
rvseckill_item
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:padding="10dp"
android:layout_height="wrap_content">

    <com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/iv"
android:layout_width="90dp"
android:layout_height="90dp"/>

</LinearLayout>