使用xrecyclerview+OK+Fresco加载图片实现商品列表

首先导入依赖

compile 'com.jcodecraeer:xrecyclerview:1.3.2'
    compile 'com.google.code.gson:gson:2.7'
    compile 'com.squareup.okhttp3:okhttp:3.2.0'
    compile 'com.squareup.okio:okio:1.7.0'
    compile 'com.facebook.fresco:fresco:0.12.0'

然后是布局文件,切记将母布局上的灰色的一行粘贴到使用的布局中

<?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="wrap_content"
    android:orientation="vertical"
    tools:context="com.example.administrator.day2_demo.view.MainActivity">

    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:overScrollMode="never"
        android:id="@+id/recy"></com.jcodecraeer.xrecyclerview.XRecyclerView>

</LinearLayout>

item布局将样式方法前的Android改为fresco

xmlns:fresco="http://schemas.android.com/apk/res-auto"放入母布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <com.facebook.drawee.view.SimpleDraweeView
        android:layout_marginLeft="10dp"
        android:layout_width="90dp"
        android:layout_height="90dp"
        fresco:actualImageScaleType="centerCrop"
        fresco:roundingBorderColor="#fff3cf44"
        fresco:roundingBorderWidth="2dp"
        android:src="@drawable/ic_launcher_background"
        android:id="@+id/img" />

    <LinearLayout
        android:layout_marginLeft="10dp"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="100dp">

        <TextView
            android:layout_gravity="center"
            android:layout_marginTop="8dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/price01"
            android:textSize="22sp"
            android:text="11111"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/price02"
            android:layout_marginLeft="10dp"
            android:textSize="18sp"
            android:textColor="#FF0000"
            android:text="11111"
            />
    </LinearLayout>
</LinearLayout>

item02与itme一样

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_marginLeft="10dp"
        android:layout_width="0dp"
        android:layout_weight="8"
        android:layout_height="100dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/item02_price01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="8dp"
            android:text="11111"
            android:textSize="22sp" />

        <TextView
            android:id="@+id/item02_price02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text="11111"
            android:textColor="#FF0000"
            android:textSize="18sp" />
    </LinearLayout>

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/item02_img"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:src="@drawable/ic_launcher_background"
        fresco:roundAsCircle="true"
        fresco:roundingBorderColor="#fff3cf44"
        fresco:roundingBorderWidth="2dp" />

</LinearLayout>

以下 是OKhttoUtils

package com.example.administrator.day2_demo.http;

import java.util.Map;

public interface GoodsListener {


    void GoodsSuccess(String json);
    void GoodsError(String error);

}
 
 
package com.example.administrator.day2_demo.http;

public class Httpfig {
    public static String goods_url="https://www.zhaoapi.cn/product/getProducts";
}
package com.example.administrator.day2_demo.http;

import android.os.Handler;
import android.os.Message;
import android.util.Log;

import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.Set;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

/**
 * 单利模式
 * 就是一个应用里面只有一个对象
 * 好处:节约内存。
 * 1.饿汉式
 * 开始对象就创建出来了
 * 2.懒汉式
 * 开始对象是null,什么时候使用,就是什么时候创建。
 */

public class OKHttpUtils {
    private static final String TAG = "OKHttpUtils----";

    private static OKHttpUtils okHttpUtils = null;

    private MyHandler myHandler = new MyHandler();
    private LoginListener onLoginListener;

    public static OKHttpUtils getInstance() {
        if (okHttpUtils == null) {
            okHttpUtils = new OKHttpUtils();
        }
        return okHttpUtils;
    }

    //get
    public void okGet(String url, String mobile, String password) {
        String url1 = url + "?mobile=" + mobile + "&password=" + password;
        //创建OKHttpClient
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new MyIntercepter()).build();
        //用request 请求,将url,和参数惊醒封装。
        Request request = new Request.Builder().url(url1).build();
        //call是请求队列,ok里面,请求队队列默认是一个。
        Call call = client.newCall(request);
        //一部请求,成功和失败的方法都是在线程,不能进行UI跟新。
        //handler   synctask
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d(TAG, "onFailure() returned: " + "失败--");
                Message message = myHandler.obtainMessage();
                message.what = 0;
                message.obj = e.getMessage();
                myHandler.sendMessage(message);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
//                java.lang.IllegalStateException: closed
//                Log.d(TAG, "onResponse() returned: " + response.body().string());
                Message message = myHandler.obtainMessage();
                message.what = 1;
                message.obj = response.body().string();
                myHandler.sendMessage(message);
            }
        });
    }

    //post
    public void okPost(String url, Map<String, String> params) {
        //创建OKHttpClient
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new MyIntercepter()).build();
        FormBody.Builder builder = new FormBody.Builder();
        //遍历map集合,将参数放入body即可    遍历的核心思想就是。根据键取值
        Set<String> keys = params.keySet();
        for (String key : keys) {
            String value = params.get(key);
            //放入body
            builder.add(key, value);
        }

        FormBody body = builder.build();
        //用request 请求,将url,和参数惊醒封装。
        Request request = new Request.Builder().url(url).post(body).build();
        //call是请求队列,ok里面,请求队队列默认是一个。
        Call call = client.newCall(request);
        //一部请求,成功和失败的方法都是在线程,不能进行UI跟新。
        //handler   synctask
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d(TAG, "onFailure() returned: " + "失败--");
                Message message = myHandler.obtainMessage();
                message.what = 0;
                message.obj = e.getMessage();
                myHandler.sendMessage(message);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
//                Log.d(TAG, "onResponse() returned: " + response.body().string());
                Message message = myHandler.obtainMessage();
                message.what = 1;
                message.obj = response.body().string();
                myHandler.sendMessage(message);
            }
        });
    }
    //上传

    //将输入发送到主线程,处理线程问题
    //接口回调
    class MyHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            int w = msg.what;
            switch (w) {
                case 0:
                    //失败
                    String error = (String) msg.obj;
                    //传出去
                    onLoginListener.loginError(error);
                    break;

                case 1:
                    //成功
                    String json = (String) msg.obj;
                    onLoginListener.loginSuccess(json);
                    break;
            }
        }
    }

    //
    public interface LoginListener {
        //成功
        void loginSuccess(String json);

        //失败
        void loginError(String error);
    }

    //提供一个外部访问的方法
    public void setOnLoginListener(LoginListener onLoginListener) {
        this.onLoginListener = onLoginListener;
    }

    //拦截器。实现公参数的拼接
    class MyIntercepter implements Interceptor {
        //拦截的方法。
//        chain链条,获取请求,获取相应
        @Override
        public Response intercept(Chain chain) throws IOException {
            //获取请求
            Request request = chain.request();
            RequestBody body = request.body();
            //判断如果是formbody
            if (body instanceof FormBody) {
                //创建新的body,将原来的参数,放入新的body里面,然后再讲公共参数,添加到新的body里面
                FormBody.Builder builder = new FormBody.Builder();
                //遍历旧的body
                for (int i = 0; i < ((FormBody) body).size(); i++) {
                    String key = ((FormBody) body).name(i);
                    String value = ((FormBody) body).value(i);
                    //添加
                    builder.add(key, value);
                }
                builder.add("source", "android");
                builder.add("token", "appVersion");
                FormBody newBody = builder.build();
                //创建新的请求
                Request request1 = request.newBuilder().post(newBody).build();
                //让request1去重新请求,proceed所有http请求的核心
                Response response = chain.proceed(request1);
                return response;
            }
            return null;
        }
    }

    //上传头像
    public void upLoadImage(String upload_url, File file) {
        //创建OKHttpClient
        OkHttpClient okHttpClient = new OkHttpClient();
        //创建MultiPartBody
        MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);
        //设置参数
        MediaType mediaType = MediaType.parse("image/png");
        builder.addFormDataPart("file", file.getName(), RequestBody.create(mediaType, file));
        //添加其他参数
        builder.addFormDataPart("uid", "71");

        MultipartBody body = builder.build();
        //创建请求队列
        Request request = new Request.Builder().url(upload_url).post(body).build();
        Call newCall = okHttpClient.newCall(request);
        newCall.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d(TAG, "onFailure() returned: " + "shibai---" + e.getMessage());
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.d(TAG, "onResponse() returned: " + response.body().string());
            }
        });
    }

}

以下是View视图层

IMainView
public interface IMainView {
    void ShowGoods(List<GoodsBean.DataBean> list);

    int pscid();
}
MyApp
public class MyApp extends Application {
    private static MyApp mInstance;
    @Override
    public void onCreate() {
        super.onCreate();
        mInstance=this;
        Fresco.initialize(this);


    }
    public static MyApp getInstance(){
        return mInstance;
    };
}

以下是model层
 
 
public interface IModel {
    void getDate(String url, Map<String,String> map, GoodsListener goodsListener);
}
IModelImpl
public class IModelImpl implements IModel {
    @Override
    public void getDate(String url, Map<String, String> map, final GoodsListener goodsListener) {
        OKHttpUtils okHttpUtils=new OKHttpUtils();
        okHttpUtils.okPost(url,map);
        okHttpUtils.setOnLoginListener(new OKHttpUtils.LoginListener() {
            @Override
            public void loginSuccess(String json) {
                goodsListener.GoodsSuccess(json);
            }

            @Override
            public void loginError(String error) {
                goodsListener.GoodsError(error);
            }
        });
    }
}

然后是Bean
 
 
public class GoodsBean {

    /**
     * msg : 请求成功
     * code : 0
     * data : [{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":1,"price":118,"pscid":1,"salenum":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":2,"price":299,"pscid":1,"salenum":999,"sellerid":18,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":0,"pid":3,"price":198,"pscid":1,"salenum":1234,"sellerid":19,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":2,"pid":4,"price":999,"pscid":1,"salenum":356,"sellerid":20,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":5,"price":88.99,"pscid":1,"salenum":678,"sellerid":21,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":0,"pid":6,"price":7.99,"pscid":1,"salenum":234,"sellerid":22,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":7,"price":120.01,"pscid":1,"salenum":1266,"sellerid":23,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":0,"pid":8,"price":324,"pscid":1,"salenum":3000,"sellerid":1,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":2,"pid":9,"price":78.99,"pscid":1,"salenum":2356,"sellerid":2,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":10,"price":555.55,"pscid":1,"salenum":0,"sellerid":3,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}]
     * page : 1
     */

    private String msg;
    private String code;
    private String page;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * bargainPrice : 111.99
         * createtime : 2017-10-14T21:39:05
         * detailUrl : https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends
         * images : https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg
         * itemtype : 1
         * pid : 1
         * price : 118
         * pscid : 1
         * salenum : 0
         * sellerid : 17
         * subhead : 每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下
         * title : 北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g
         */

        private String bargainPrice;
        private String createtime;
        private String detailUrl;
        private String images;
        private String itemtype;
        private String pid;
        private String price;
        private String pscid;
        private String salenum;
        private String sellerid;
        private String subhead;
        private String title;

        public String getBargainPrice() {
            return bargainPrice;
        }

        public void setBargainPrice(String bargainPrice) {
            this.bargainPrice = bargainPrice;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public String getDetailUrl() {
            return detailUrl;
        }

        public void setDetailUrl(String detailUrl) {
            this.detailUrl = detailUrl;
        }

        public String getImages() {
            return images;
        }

        public void setImages(String images) {
            this.images = images;
        }

        public String getItemtype() {
            return itemtype;
        }

        public void setItemtype(String itemtype) {
            this.itemtype = itemtype;
        }

        public String getPid() {
            return pid;
        }

        public void setPid(String pid) {
            this.pid = pid;
        }

        public String getPrice() {
            return price;
        }

        public void setPrice(String price) {
            this.price = price;
        }

        public String getPscid() {
            return pscid;
        }

        public void setPscid(String pscid) {
            this.pscid = pscid;
        }

        public String getSalenum() {
            return salenum;
        }

        public void setSalenum(String salenum) {
            this.salenum = salenum;
        }

        public String getSellerid() {
            return sellerid;
        }

        public void setSellerid(String sellerid) {
            this.sellerid = sellerid;
        }

        public String getSubhead() {
            return subhead;
        }

        public void setSubhead(String subhead) {
            this.subhead = subhead;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }
    }
}

适配器

MyAdapter
public class MyAdapter extends XRecyclerView.Adapter<XRecyclerView.ViewHolder> {
    private static final int TYPE0 = 0;
    private static final int TYPE1 = 1;
    private Context context;
    private List<GoodsBean.DataBean> list;

    public MyAdapter(Context context, List<GoodsBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }


    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (viewType == TYPE0) {
            View view = View.inflate(context, R.layout.item, null);
            MyViewHolder myHolder = new MyViewHolder(view);
            return myHolder;
        } else if (viewType == TYPE1) {
            View view = View.inflate(context, R.layout.item02, null);
            MyPicHolder picHolder = new MyPicHolder(view);

            return picHolder;

        }

        return null;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof MyViewHolder) {
            MyViewHolder myViewHolder = (MyViewHolder) holder;
            String images = list.get(position).getImages();
            String img = images.split("\\|")[0];
            Uri uri = Uri.parse(img);
            myViewHolder.img.setImageURI(uri);
            myViewHolder.price01.setText(list.get(position).getTitle());
            myViewHolder.price02.setText("¥:" + list.get(position).getBargainPrice());
        } else if (holder instanceof MyPicHolder) {

            MyPicHolder picHolder = (MyPicHolder) holder;
            String images = list.get(position).getImages();
            String img = images.split("\\|")[0];
            Uri uri = Uri.parse(img);
            picHolder.item02_img.setImageURI(uri);
            picHolder.item02_price01.setText(list.get(position).getTitle());
            picHolder.item02_price02.setText("¥:" + list.get(position).getBargainPrice());
        }
    }

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


    @Override
    public int getItemViewType(int position) {
        if(position%2==0){
            return TYPE0;
        }else{
            return TYPE1;
        }
    }

    public class MyViewHolder extends XRecyclerView.ViewHolder {

        private final SimpleDraweeView img;
        private final TextView price01;
        private final TextView price02;

        public MyViewHolder(View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.img);
            price01 = itemView.findViewById(R.id.price01);
            price02 = itemView.findViewById(R.id.price02);
        }

        public SimpleDraweeView getImg() {
            return img;
        }

        public TextView getPrice01() {
            return price01;
        }

        public TextView getPrice02() {
            return price02;
        }
    }

    public class MyPicHolder extends XRecyclerView.ViewHolder {


        private final SimpleDraweeView item02_img;
        private final TextView item02_price01;
        private final TextView item02_price02;

        public MyPicHolder(View itemView) {
            super(itemView);
            item02_img = itemView.findViewById(R.id.item02_img);
            item02_price01 = itemView.findViewById(R.id.item02_price01);
            item02_price02 = itemView.findViewById(R.id.item02_price02);
        }

        public SimpleDraweeView getItem02_img() {
            return item02_img;
        }

        public TextView getItem02_price01() {
            return item02_price01;
        }

        public TextView getItem02_price02() {
            return item02_price02;
        }
    }
}

P层
 
 
IPresenter
public interface IPresenter {
    void getGoods(IModel iModel, IMainView iMainView);
}

public class IPresenterImpl implements IPresenter {
    @Override
    public void getGoods(IModel iModel, final IMainView iMainView) {
        Map<String,String> map=new HashMap<>();
        map.put("pscid",iMainView.pscid()+"");
        iModel.getDate(Httpfig.goods_url, map, new GoodsListener() {
            @Override
            public void GoodsSuccess(String json) {
                Gson gson=new Gson();
                GoodsBean goodsBean = gson.fromJson(json, GoodsBean.class);
                List<GoodsBean.DataBean> data = goodsBean.getData();
                iMainView.ShowGoods(data);
            }

            @Override
            public void GoodsError(String error) {

            }
        });
    }
}

最后主MainActivity方法
public class MainActivity extends AppCompatActivity implements IMainView{
    private XRecyclerView xr;
    private static final String TAG = "MainActivity";
    private MyAdapter adapter;
    private int pscid = 1;
    private Handler mHandler = new Handler();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        xr = findViewById(R.id.recy);

        xr.setLayoutManager(new LinearLayoutManager(this));
        IPresenterImpl presenter = new IPresenterImpl();
        presenter.getGoods(new IModelImpl(),this);
        xr.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                MainActivity.this.pscid++;
                IPresenterImpl presenter = new IPresenterImpl();
                presenter.getGoods(new IModelImpl(),MainActivity.this);
                xr.refreshComplete();
            }

            @Override
            public void onLoadMore() {

                MainActivity.this.pscid++;
                IPresenterImpl presenter = new IPresenterImpl();
                presenter.getGoods(new IModelImpl(),MainActivity.this);

            }
        });

    }

    @Override
    public void ShowGoods(List<GoodsBean.DataBean> list) {
        adapter = new MyAdapter(MainActivity.this,list);
        xr.setAdapter(adapter);
        Log.d(TAG, "ShowGoods: "+list.size());
    }

    @Override
    public int pscid() {
        return MainActivity.this.pscid;
    }
}




猜你喜欢

转载自blog.csdn.net/qq_40857831/article/details/80276218