京东分类页面②

ListActivity

package com.example.a1512qjd.ui.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;

import com.example.a1512qjd.R;
import com.example.a1512qjd.bean.ProductsBean;
import com.example.a1512qjd.presenter.ProductsPresenterImp;
import com.example.a1512qjd.ui.adapter.XrvListAdapter;
import com.example.a1512qjd.ui.inter.ProductsView;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.ArrayList;
import java.util.List;

public class ListActivity extends AppCompatActivity implements ProductsView {

    private XRecyclerView mXrv;
    private ProductsPresenterImp productsPresenterImp;
    private int pscid;
    private boolean isRefresh = true;
    private XrvListAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);
        initView();
        //获取pscid
        Intent intent = getIntent();
        pscid = intent.getIntExtra("pscid", 0);
        //绑定
        productsPresenterImp = new ProductsPresenterImp(this);
        productsPresenterImp.getProducts(pscid + "");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        productsPresenterImp.detach();
    }

    @Override
    public void showData(final List<ProductsBean.DataBean> list) {
        final List<ProductsBean.DataBean> tempList = new ArrayList<>();
        tempList.addAll(list);
        //创建适配器
        if (isRefresh) {
            adapter = new XrvListAdapter(this, list);
            mXrv.setAdapter(adapter);
            adapter.refresh(tempList);
            mXrv.refreshComplete();//设置刷新完成
        } else {
            if (adapter != null) {
                //判断适配器是否创建过
                adapter.loadMore(tempList);
                mXrv.loadMoreComplete();//设置加载更多完成
            }
        }
        if (adapter == null) {
            return;
        }
        adapter.setOnListItemClickListener(new XrvListAdapter.OnListItemClickListener() {
            @Override
            public void OnItemClick(ProductsBean.DataBean dataBean) {
                Intent intent = new Intent(ListActivity.this, ListDetailsActivity.class);
                intent.putExtra("bean", dataBean);
                startActivity(intent);
            }
        });
    }

    private void initView() {
        mXrv = (XRecyclerView) findViewById(R.id.xrv);
        //设置布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        mXrv.setLayoutManager(linearLayoutManager);

        //设置刷新和加载更多监听
        mXrv.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                //刷新
                isRefresh = true;
                productsPresenterImp.getProducts(pscid + "");
            }

            @Override
            public void onLoadMore() {
                //加载更多
                isRefresh = false;
                productsPresenterImp.getProducts(pscid + "");
            }
        });

    }

}

activty_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ui.activity.ListActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#ff3660"
        android:gravity="center_vertical"
        android:orientation="horizontal">


        <ImageView
            android:id="@+id/ivZxing"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginLeft="15dp"
            android:background="@drawable/a_s"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_weight="1"
            android:background="@drawable/shape_search"></LinearLayout>

        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_alignParentRight="true"
            android:layout_marginRight="15dp"
            android:background="@drawable/my_msg_bai"/>
    </LinearLayout>

    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/xrv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></com.jcodecraeer.xrecyclerview.XRecyclerView>
</LinearLayout>

ProductsModel

package com.example.a1512qjd.model.inter;

import com.example.a1512qjd.net.OnNetListener;

public interface ProductsModel {
    void getProducts(String pscid, OnNetListener onNetListener);

    void getProducts(String pscid, String page, String sort, OnNetListener onNetListener);
}
ProductsModelImp

package com.example.a1512qjd.model;

import com.example.a1512qjd.bean.ProductsBean;
import com.example.a1512qjd.model.inter.ProductsModel;
import com.example.a1512qjd.net.Api;
import com.example.a1512qjd.net.OkhttpUtils;
import com.example.a1512qjd.net.OnNetListener;
import com.google.gson.Gson;

import java.util.HashMap;
import java.util.Map;

public class ProductsModelImp implements ProductsModel {
    @Override
    public void getProducts(String pscid, final OnNetListener onNetListener) {
        Map<String, String> params = new HashMap<>();
        params.put("pscid", pscid);
        OkhttpUtils.getInstance().doPost(Api.PRODUCTS_URL, params, new OnNetListener() {
            @Override
            public void onSuccess(String result) {
                ProductsBean productsBean = new Gson().fromJson(result, ProductsBean.class);
                if ("0".equals(productsBean.getCode())) {
                    onNetListener.onSuccess(result);
                }
            }

            @Override
            public void onFailed(Exception e) {
                onNetListener.onFailed(e);
            }
        });
    }

    @Override
    public void getProducts(String pscid, String page, String sort, OnNetListener onNetListener) {

    }

}

ProductsView

package com.example.a1512qjd.ui.inter;

import com.example.a1512qjd.bean.ProductsBean;

import java.util.List;

public interface ProductsView {
    void showData(List<ProductsBean.DataBean> list);
}
ProductsPresenter

package com.example.a1512qjd.presenter.inter;

public interface ProductsPresenter {
    void getProducts(String pscid);

}

ProductsPresenterImp

package com.example.a1512qjd.presenter;

import com.example.a1512qjd.bean.ProductsBean;
import com.example.a1512qjd.model.ProductsModelImp;
import com.example.a1512qjd.net.OnNetListener;
import com.example.a1512qjd.presenter.inter.ProductsPresenter;
import com.example.a1512qjd.ui.inter.ProductsView;
import com.google.gson.Gson;

public class ProductsPresenterImp implements ProductsPresenter {
    private ProductsView view;
    private final ProductsModelImp productsModelImp;

    public ProductsPresenterImp(ProductsView view) {
        this.view = view;
        productsModelImp = new ProductsModelImp();
    }

    @Override
    public void getProducts(String pscid) {
        productsModelImp.getProducts(pscid, new OnNetListener() {
            @Override
            public void onSuccess(String result) {
                if (view != null) {
                    ProductsBean productsBean = new Gson().fromJson(result, ProductsBean.class);
                    view.showData(productsBean.getData());
                }
            }

            @Override
            public void onFailed(Exception e) {

            }
        });
    }

    public void detach() {
        if (view != null) {
            view = null;
        }
    }
}

XrvListAdapter

package com.example.a1512qjd.ui.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.a1512qjd.R;
import com.example.a1512qjd.bean.ProductsBean;

import java.util.List;

public class XrvListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private List<ProductsBean.DataBean> list;
    private LayoutInflater inflater;

    private OnListItemClickListener onListItemClickListener;

    public interface OnListItemClickListener {
        void OnItemClick(ProductsBean.DataBean dataBean);
    }

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

    public void setOnListItemClickListener(OnListItemClickListener onListItemClickListener) {
        this.onListItemClickListener = onListItemClickListener;
    }

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

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
        XlvViewHolder xlvViewHolder = (XlvViewHolder) holder;
        final ProductsBean.DataBean dataBean = list.get(position);
        String imgUrl = dataBean.getImages().split("\\|")[0];
        Glide.with(context).load(imgUrl).into(xlvViewHolder.iv);
        xlvViewHolder.tvTitle.setText(dataBean.getTitle());
        xlvViewHolder.tvPrice.setText("¥" + dataBean.getBargainPrice() + "");

        //设置条目监听
        xlvViewHolder.ll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onListItemClickListener != null) {
                    onListItemClickListener.OnItemClick(dataBean);
                }
            }
        });
    }

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


    class XlvViewHolder extends RecyclerView.ViewHolder {

        private final LinearLayout ll;
        private final ImageView iv;
        private final TextView tvTitle;
        private final TextView tvPrice;

        public XlvViewHolder(View itemView) {
            super(itemView);
            ll = itemView.findViewById(R.id.ll);
            iv = itemView.findViewById(R.id.iv);
            tvTitle = itemView.findViewById(R.id.tvTitle);
            tvPrice = itemView.findViewById(R.id.tvPrice);
        }
    }

    /**
     * 刷新
     *
     * @param templist
     */
    public void refresh(List<ProductsBean.DataBean> templist) {
        this.list.clear();
        this.list.addAll(templist);
        notifyDataSetChanged();
    }

    /**
     * 加载更多
     *
     * @param list
     */
    public void loadMore(List<ProductsBean.DataBean> list) {
        this.list.addAll(list);
        notifyDataSetChanged();
    }

}

rvlist_item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/ll"
              android:layout_width="match_parent"
              android:layout_height="100dp"
              android:orientation="horizontal">

    <ImageView
        android:id="@+id/iv"
        android:layout_width="70dp"
        android:layout_height="70dp"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:orientation="vertical">

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

        <TextView
            android:id="@+id/tvPrice"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:textColor="#ff0000"/>
    </LinearLayout>

</LinearLayout>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值