首先导入依赖

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.XRecyclerViewandroid: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.SimpleDraweeViewandroid: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" /><LinearLayoutandroid:layout_marginLeft="10dp"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="100dp"><TextViewandroid: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"/><TextViewandroid: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"><LinearLayoutandroid:layout_marginLeft="10dp"android:layout_width="0dp"android:layout_weight="8"android:layout_height="100dp"android:orientation="vertical"><TextViewandroid: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" /><TextViewandroid: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.SimpleDraweeViewandroid: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;}//getpublic void okGet(String url, String mobile, String password) {String url1 = url + "?mobile=" + mobile + "&password=" + password;//创建OKHttpClientOkHttpClient 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   synctaskcall.enqueue(new Callback() {@Overridepublic 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);}@Overridepublic 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);}});}//postpublic void okPost(String url, Map<String, String> params) {//创建OKHttpClientOkHttpClient 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);//放入bodybuilder.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   synctaskcall.enqueue(new Callback() {@Overridepublic 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);}@Overridepublic 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 {@Overridepublic 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链条,获取请求,获取相应@Overridepublic Response intercept(Chain chain) throws IOException {//获取请求Request request = chain.request();RequestBody body = request.body();//判断如果是formbodyif (body instanceof FormBody) {//创建新的body,将原来的参数,放入新的body里面,然后再讲公共参数,添加到新的body里面FormBody.Builder builder = new FormBody.Builder();//遍历旧的bodyfor (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) {//创建OKHttpClientOkHttpClient okHttpClient = new OkHttpClient();//创建MultiPartBodyMultipartBody.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() {@Overridepublic void onFailure(Call call, IOException e) {Log.d(TAG, "onFailure() returned: " + "shibai---" + e.getMessage());}@Overridepublic 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;@Overridepublic 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 {@Overridepublic void getDate(String url, Map<String, String> map, final GoodsListener goodsListener) {OKHttpUtils okHttpUtils=new OKHttpUtils();okHttpUtils.okPost(url,map);okHttpUtils.setOnLoginListener(new OKHttpUtils.LoginListener() {@Overridepublic void loginSuccess(String json) {goodsListener.GoodsSuccess(json);}@Overridepublic 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@Overridepublic 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;}@Overridepublic 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());}}@Overridepublic int getItemCount() {return list.size();}@Overridepublic 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 {@Overridepublic 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() {@Overridepublic void GoodsSuccess(String json) {Gson gson=new Gson();GoodsBean goodsBean = gson.fromJson(json, GoodsBean.class);List<GoodsBean.DataBean> data = goodsBean.getData();iMainView.ShowGoods(data);}@Overridepublic 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();@Overrideprotected 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() {@Overridepublic void onRefresh() {MainActivity.this.pscid++;IPresenterImpl presenter = new IPresenterImpl();presenter.getGoods(new IModelImpl(),MainActivity.this);xr.refreshComplete();}@Overridepublic void onLoadMore() {MainActivity.this.pscid++;IPresenterImpl presenter = new IPresenterImpl();presenter.getGoods(new IModelImpl(),MainActivity.this);}});}@Overridepublic void ShowGoods(List<GoodsBean.DataBean> list) {adapter = new MyAdapter(MainActivity.this,list);xr.setAdapter(adapter);Log.d(TAG, "ShowGoods: "+list.size());}@Overridepublic int pscid() {return MainActivity.this.pscid;}
}

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

  1. 使用Fresco加载图片

    Fresco是facebook推出的一款强大的图片加载的框架,我们都知道,在手机上,每一个像素的R.G.B和alpha通道总共要占用4byte的空间,而Fresco可以最大限度节省空间和CPU时间,它 ...

  2. Fresco加载图片内存占用过大导致OOM

    Fresco加载网络图片部分设备出现显示部分图片为黑色并崩溃 1.在使用Fresco显示网络图片在天猫魔盒M17设备时,出现部分图片显示为黑色,且一段时间后程序崩溃. 尝试把setImageURI方法 ...

  3. Fresco加载图片使用笔记--基本使用,播放动态wbep,控制播放次数,预加载,闪帧解决

    1. 简单使用 2. 属性控制 3. 播放动态webp 4. 监听webp播放及控制webp播放次数 5. 预取图片 6. 连续加载多张动图闪帧解决方案 1. 简单使用 1)添加依赖: depende ...

  4. 微信小程序开发实战基础一、页面跳转,底部导航栏,分享,加载图片标签,列表

    1.页面跳转 wx.navigateTo({ url: "../four/four" })--可返回 wx.redirectTo({ url: "../four/four ...

  5. Fresco加载图片优化

    今天在使用应用时发现,应用居然崩溃了!一看监听器发现,当列表滚动到底部后内存达到了63M以上后必定崩溃,以前怎么就没崩溃呢?怪事了,但是内存这么大肯定是有问题的!还是得解决一下内存高的问题. 优化方法 ...

  6. 专为Android加载图片Fresco:详细图解SimpleDraweeView加载图片基础

    Fresco简单的使用-SimpleDraweeView 百学须先立志-学前须知: 在我们平时加载图片(不管是下载还是加载本地图片-..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该 ...

  7. 安卓加载图片四大框架

    主流图片加载框架? 1> Picasso 2> Glide 3> Fresco 4> ImageLoader 介绍: Picasso:和Square的网络库一起能发挥最大作用, ...

  8. 原生CSS设置预加载图片之前的默认背景图

    /*默认加载图片*/ .class-name { /*背景图片*/background: url(../../img/banner/banner-default.jpg) no-repeat cent ...

  9. 【Qt】QPixmap加载图片报错:Corrupt JPEG data: premature end of data segment Didn‘t expect more than one scan

    1.问题描述 在使用QPixmap加载图片时失败,错误信息如下 Corrupt JPEG data: premature end of data segment Didn't expect more ...

最新文章

  1. 关于jetbrains系列产品2018.1.5以后的使用(crack)方法
  2. 一个UI布局框架,以最少的代码实现UI设置及布局控制
  3. VS2010和opencv2.4.9的配置
  4. 代码夹带是洪水猛兽吗?
  5. Python3.6学习笔记(五)
  6. 不染用计算机数字,2013年计算机等级考试一级B知识预测题(6)
  7. mysql insert 主键冲突_在MySql中建立存储过程和解决insert into select 中主键冲突的有关问题...
  8. 验证输入是否满足条件
  9. 语音识别技术分析:语音变成文字其实没有那么神秘
  10. ASP.NET WebAPI构建API接口服务实战演练
  11. 谷歌全新OS曝光:它是操作系统世界里一种全新的艺术
  12. 转载:iOS 8 自适应 Cell
  13. 03173软件开发工具主观题汇总
  14. macOS 12.4beta3 With OpenCore 0.8.1 and Clover and winPE黑苹果镜像
  15. 课堂经验值管理小程序_济南小程序开发,微信小程序应用开发实现单店管理
  16. HTML5页面增强元素
  17. vivo X9L的usb调试模式在哪里,开启vivo X9Lusb调试模式的流程
  18. 虚拟机无法上网解决办法
  19. BootStrap--CSS组件--按钮组(btn-group)
  20. FindWithTag用法

热门文章

  1. Uniapp 设置全局背景100%高度的方法
  2. vue中echarts 实现下钻(饼图为例)
  3. Android横竖屏切换小结(重建、非重建Activity)
  4. mysql中以什么开头的正则_MYSQL正则表达式
  5. 从重大漏洞应急看云原生架构下的安全建设与安全运营(上)
  6. 配置npm淘宝镜像、使用npm管理项目
  7. Python面试知识点(2020持续更新)
  8. 无皇刀谭 #183; 异邦人
  9. 7-2 哥德巴赫猜想
  10. java中show方法的调用_Java方法调用细节