天天看點

xrecyclerView分頁加載,多條目顯示

model包

GoodsAdapter

public class GoodsAdapter extends RecyclerView.Adapter{

    public static final int TYPE_ONE_IMAGE = ;
    public static final int TYPE_TWO_IMAGE = ;
    private Context context;
    private List<GoodsListBean.DataBean> data = new ArrayList<>();

    public GoodsAdapter(Context context) {
        this.context = context;
    }

    //重新整理清單資料
    public void updateList(List<GoodsListBean.DataBean> data) {
        this.data.clear();
        addList(data);
        notifyDataSetChanged();
    }

    //加載下一頁資料
    public void addList(List<GoodsListBean.DataBean> data) {
        this.data.addAll(data);
        notifyDataSetChanged();
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view;
        RecyclerView.ViewHolder holder = null;
        switch (viewType) {
            case :
                view = View.inflate(context, R.layout.item_goods_list, null);
                holder = new GoodsViewHolder(view);
                break;
            case :
                view = View.inflate(context, R.layout.item_goods_twolist, null);
                holder = new GoodsTwoViewHolder(view);
        }
        return holder;
    }


    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        switch (getItemViewType(position)) {
            case :
                GoodsViewHolder holderOne = (GoodsViewHolder) holder;
                String image = data.get(position).getImages();

                String pic = image.split("\\|")[];

                holderOne.img.setImageURI(pic);

                holderOne.title.setText(data.get(position).getTitle());
                break;
            case :
                GoodsTwoViewHolder holdertwo = (GoodsTwoViewHolder) holder;
                String images = data.get(position).getImages();

                String pic_url = images.split("\\|")[];

                holdertwo.img.setImageURI(pic_url);

                holdertwo.title.setText(data.get(position).getTitle());






        }

    }

    @Override
    public int getItemViewType(int position) {


        if (position%==) {
            return TYPE_TWO_IMAGE;
        } else {
            return TYPE_ONE_IMAGE;
        }
    }

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

    class GoodsViewHolder extends RecyclerView.ViewHolder {
        public TextView title;
        public SimpleDraweeView img;

        public GoodsViewHolder(View itemView) {
            super(itemView);
            title = itemView.findViewById(R.id.tv);
            img = itemView.findViewById(R.id.img);
        }
    }

    class GoodsTwoViewHolder extends RecyclerView.ViewHolder {
        public TextView title;
        public SimpleDraweeView img;

        public GoodsTwoViewHolder(View itemView) {
            super(itemView);
            title = itemView.findViewById(R.id.tv);
            img = itemView.findViewById(R.id.img);
        }
    }

}
           

GoodsModel

public class GoodsModel implements IModel {
    @Override
    public void getData(String pscid,String page, final IPresenter iPresenter) {
        Map<String,String> params=new HashMap<>();
        params.put("pscid",pscid);
        OkHttpUtils okHttpUtils= OkHttpUtils.getInstance();
        okHttpUtils.doPost(HttpConfig.GoodsListUrl, params, new OnFinishListener() {
            @Override
            public void onSuccess(String json) {
                iPresenter.onSuccess(json);

            }

            @Override
            public void onFailed(String error) {
                iPresenter.onFailed(error);

            }
        });

    }
}
           

IModel

public interface IModel {
    void getData(String pscid,String page, IPresenter iPresenter);
}
           

MyApp

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);

    }
}
           

presenter包

GoodsPresenter

public class GoodsPresenter implements IPresenter {

    private static final String TAG = "GoodsPresenter----";
    private IView iView;
    private GoodsModel goodsModel;

    public GoodsPresenter(IView iView) {
        this.iView = iView;
        goodsModel=new GoodsModel();
    }

    @Override
    public void getCarInfo(String pscid,String page) {
       goodsModel.getData(pscid,page,this);
    }

    @Override
    public void onSuccess(String json) {

        Log.d(TAG, "onSuccess: "+json);
        if(null!=iView){
            Gson gson=new Gson();
            GoodsListBean goodsListBean = gson.fromJson(json, GoodsListBean.class);
            List<GoodsListBean.DataBean> data = goodsListBean.getData();

            Log.d(TAG, "onSuccess: "+data);
            iView.showDataToView(data);
        }

    }

    @Override
    public void onFailed(String error) {
            if(null!=iView ){

                Log.d(TAG, "onFailed: "+error);

        }
    }

    @Override
    public void onDestory() {
        if(null!=iView){
            iView=null;
        }

    }
}
           

IPresenter

public interface IPresenter {
    void getCarInfo(String pscid,String page);
    void onSuccess(String json);
    void onFailed(String error);
    void onDestory();
}
           

utils包

CommonInterceptor

public class CommonInterceptor implements Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        //得到原始的請求對象
        Request request = chain.request();


        //得到使用者所使用的請求方式
        String method = request.method();
        if("GET".equals(method)){
            //原始的請求接口
            String oldUrl = request.url().toString();
            //拼接一個新的接口
            String newUrl = oldUrl + "&source=android";
            //重新建構請求體
            request =new Request.Builder()
                    .url(newUrl)
                    .build();
        }else if ("POST".equals(method)) {
            //得到原始的url
            String oldUrl = request.url().toString();
            //得到原有的請求參數
            FormBody oldBody = (FormBody) request.body();
            //新的建構項
            FormBody.Builder builder = new FormBody.Builder();
            for (int i = ; i < oldBody.size(); i++) {
                //取出相關請求參數(原有的)
                String name = oldBody.name(i);
                String value = oldBody.value(i);
                //将原始的參數拼裝到新的建構體當中
                builder.add(name, value);
            }
            //拼裝我們的公共參數
            builder.add("source", "android");
            request=new Request.Builder()
                    .url(oldUrl)
                    .post(builder.build())
                    .build();


        }

        //重新發送請求
        return chain.proceed(request);
    }
}
           

HttpConfig

public class HttpConfig {

    public final static String GoodsListUrl="https://www.zhaoapi.cn/product/getProducts";
}
           

OkHttpUtils

public class OkHttpUtils {
    private static Handler handler=new Handler();
    //單例模式
    private static OkHttpUtils OK_HTTP_UTILS=null;

    /**
     * 得到OkHttpUtils執行個體對象
     *
     * @return
     */
    private OkHttpUtils(){}
    public static OkHttpUtils getInstance(){
        if(null==OK_HTTP_UTILS){
            synchronized (OkHttpUtils.class){
                if(null==OK_HTTP_UTILS){
                    OK_HTTP_UTILS=new OkHttpUtils();
                }
            }
        }
        return OK_HTTP_UTILS;
    }

    /**
     * Get請求
     * @param onFinishListener
     */

    public void doGet(String path, Map<String,String> map, final OnFinishListener onFinishListener){
        StringBuffer sb = new StringBuffer();
        sb.append(path);
        //判斷path是否包含一個
        if(sb.indexOf("?")!=-){
            //判斷"?"是否在最後一個
            if(sb.indexOf("?")!=sb.length()-){
                sb.append("&");
            }

        }else{
            sb.append("?");
        }
        //周遊map集合中所有請求參數
        for(Map.Entry<String, String> entry:map.entrySet()){
            sb.append(entry.getKey())
                    .append("=")
                    .append(entry.getValue())
                    .append("&");
        }

        if(sb.lastIndexOf("&")!=-){
            sb.deleteCharAt(sb.length()-);
        }

        OkHttpClient okHttpClient=new OkHttpClient();
        //建構請求項
        Request request=new Request.Builder()
                .get()
                .url(sb.toString())
                .build();
        Call call =okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                //請求失敗
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onFinishListener.onFailed(e.getMessage());

                    }
                });

            }

            @Override
            public void onResponse(Call call, final Response response) throws IOException {
                if(response.isSuccessful()){
                    //得到伺服器的響應結果
                    final String result = response.body().string();
                    //請求成功
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            //主線程當中執行
                            onFinishListener.onSuccess(result);
                        }
                    });

                }
            }
        });


    }
    /**
     * post請求
     *
     * @param path
     * @param map
     * @param onFinishListener
     */

    public void doPost(String path,Map<String,String> map,final OnFinishListener onFinishListener){
        OkHttpClient okHttpClient=new OkHttpClient();
        //建構參數的對象
        FormBody.Builder builder = new FormBody.Builder();
        //周遊map集合,擷取使用者的key/value
        for(String key:map.keySet()){
            builder.add(key,map.get(key));
        }
        //建構請求項
        Request request=new Request.Builder()
                .post(builder.build())
                .url(path)
                .build();
        Call call = okHttpClient.newCall(request);

        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onFinishListener.onFailed(e.getMessage());
                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if(response.isSuccessful()){
                    final String result = response.body().string();
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            onFinishListener.onSuccess(result);
                        }
                    });

                }
            }
        });
    }

}
           

OnFinishListener

public interface OnFinishListener {
    void onSuccess(String json);
    void onFailed(String error);
}
           

view包

IView

public interface IView {
    void showDataToView(List<GoodsListBean.DataBean> data);
}
           

MainActivity

public class MainActivity extends AppCompatActivity implements IView{

    private static final String TAG ="MainActivity----" ;
    private XRecyclerView xrcy;
    private GoodsPresenter goodsPresenter;
    private GoodsAdapter adapter;
    private int pscid = ;
    private int page = ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        xrcy = (XRecyclerView) findViewById(R.id.xrcy);

        adapter = new GoodsAdapter(MainActivity.this);
        xrcy.setAdapter(adapter);
        xrcy.setLayoutManager(new LinearLayoutManager(MainActivity.this));
        //設定預設分隔線
        DividerItemDecoration dec = new DividerItemDecoration(MainActivity.this,DividerItemDecoration.VERTICAL);

        xrcy.addItemDecoration(dec);

        goodsPresenter = new GoodsPresenter(this);
        goodsPresenter.getCarInfo("1",page+"");

        if (pscid > ) {
            goodsPresenter.getCarInfo(pscid+"",page+"");
        }

        xrcy.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                page = ;
                goodsPresenter.getCarInfo(pscid+"",page+"");
            }

            @Override
            public void onLoadMore() {
                page++;
                goodsPresenter.getCarInfo(pscid+"",page+"");
            }
        });

    }

    @Override
    public void showDataToView(List<GoodsListBean.DataBean> data) {
        Log.d(TAG, "showDataToView: "+data);
        xrcy.refreshComplete();
        xrcy.loadMoreComplete();
        if (page > ) {
            //顯示添加資料
            adapter.addList(data);
        } else {
            adapter.updateList(data);
        }






    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        goodsPresenter.onDestory();
    }
}
           

bean包

GoodsListBean

public class GoodsListBean {

    /**
     * msg : 請求成功
     * code : 
     * data : [{"bargainPrice":,"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":,"pid":,"price":,"pscid":,"salenum":,"sellerid":,"subhead":"每個中秋都不能簡單,無論身在何處,你總需要一塊餅讓生活更圓滿,京東月餅讓愛更圓滿京東自營,閃電配送,更多驚喜,快用手指戳一下","title":"北京稻香村 稻香村中秋節月餅 老北京月餅禮盒655g"},{"bargainPrice":,"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":,"pid":,"price":,"pscid":,"salenum":,"sellerid":,"subhead":"每個中秋都不能簡單,無論身在何處,你總需要一塊餅讓生活更圓滿,京東月餅讓愛更圓滿京東自營,閃電配送,更多驚喜,快用手指戳一下","title":"北京稻香村 稻香村中秋節月餅 老北京月餅禮盒655g"},{"bargainPrice":,"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":,"pid":,"price":,"pscid":,"salenum":,"sellerid":,"subhead":"每個中秋都不能簡單,無論身在何處,你總需要一塊餅讓生活更圓滿,京東月餅讓愛更圓滿京東自營,閃電配送,更多驚喜,快用手指戳一下","title":"北京稻香村 稻香村中秋節月餅 老北京月餅禮盒655g"},{"bargainPrice":,"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":,"pid":,"price":,"pscid":,"salenum":,"sellerid":,"subhead":"每個中秋都不能簡單,無論身在何處,你總需要一塊餅讓生活更圓滿,京東月餅讓愛更圓滿京東自營,閃電配送,更多驚喜,快用手指戳一下","title":"北京稻香村 稻香村中秋節月餅 老北京月餅禮盒655g"},{"bargainPrice":,"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":,"pid":,"price":,"pscid":,"salenum":,"sellerid":,"subhead":"每個中秋都不能簡單,無論身在何處,你總需要一塊餅讓生活更圓滿,京東月餅讓愛更圓滿京東自營,閃電配送,更多驚喜,快用手指戳一下","title":"北京稻香村 稻香村中秋節月餅 老北京月餅禮盒655g"},{"bargainPrice":,"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":,"pid":,"price":,"pscid":,"salenum":,"sellerid":,"subhead":"每個中秋都不能簡單,無論身在何處,你總需要一塊餅讓生活更圓滿,京東月餅讓愛更圓滿京東自營,閃電配送,更多驚喜,快用手指戳一下","title":"北京稻香村 稻香村中秋節月餅 老北京月餅禮盒655g"},{"bargainPrice":,"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":,"pid":,"price":,"pscid":,"salenum":,"sellerid":,"subhead":"每個中秋都不能簡單,無論身在何處,你總需要一塊餅讓生活更圓滿,京東月餅讓愛更圓滿京東自營,閃電配送,更多驚喜,快用手指戳一下","title":"北京稻香村 稻香村中秋節月餅 老北京月餅禮盒655g"},{"bargainPrice":,"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":,"pid":,"price":,"pscid":,"salenum":,"sellerid":,"subhead":"每個中秋都不能簡單,無論身在何處,你總需要一塊餅讓生活更圓滿,京東月餅讓愛更圓滿京東自營,閃電配送,更多驚喜,快用手指戳一下","title":"北京稻香村 稻香村中秋節月餅 老北京月餅禮盒655g"},{"bargainPrice":,"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":,"pid":,"price":,"pscid":,"salenum":,"sellerid":,"subhead":"每個中秋都不能簡單,無論身在何處,你總需要一塊餅讓生活更圓滿,京東月餅讓愛更圓滿京東自營,閃電配送,更多驚喜,快用手指戳一下","title":"北京稻香村 稻香村中秋節月餅 老北京月餅禮盒655g"},{"bargainPrice":,"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":,"pid":,"price":,"pscid":,"salenum":,"sellerid":,"subhead":"每個中秋都不能簡單,無論身在何處,你總需要一塊餅讓生活更圓滿,京東月餅讓愛更圓滿京東自營,閃電配送,更多驚喜,快用手指戳一下","title":"北京稻香村 稻香村中秋節月餅 老北京月餅禮盒655g"}]
     * page : 
     */

    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 : 
         * createtime : --T21::
         * 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 : 
         * pid : 
         * price : 
         * pscid : 
         * salenum : 
         * sellerid : 
         * subhead : 每個中秋都不能簡單,無論身在何處,你總需要一塊餅讓生活更圓滿,京東月餅讓愛更圓滿京東自營,閃電配送,更多驚喜,快用手指戳一下
         * title : 北京稻香村 稻香村中秋節月餅 老北京月餅禮盒g
         */

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

        public double getBargainPrice() {
            return bargainPrice;
        }

        public void setBargainPrice(double 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 int getItemtype() {
            return itemtype;
        }

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

        public int getPid() {
            return pid;
        }

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

        public double getPrice() {
            return price;
        }

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

        public int getPscid() {
            return pscid;
        }

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

        public int getSalenum() {
            return salenum;
        }

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

        public int getSellerid() {
            return sellerid;
        }

        public void setSellerid(int 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;
        }
    }
}
           

activity_main.xml

<RelativeLayout 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"
    tools:context="com.bwie.showlist.view.MainActivity">

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

  </com.jcodecraeer.xrecyclerview.XRecyclerView>

</RelativeLayout>
           

item_goods_list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent">


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

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:layout_gravity="center"
        android:id="@+id/tv"/>

</LinearLayout>
           

item_goods_twolist.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    xmlns:app="http://schemas.android.com/apk/res-auto">

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

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



</LinearLayout>
           

依賴

compile 'com.jcodecraeer:xrecyclerview:1.5.2'
    compile 'com.facebook.fresco:fresco:1.9.0'
    compile 'com.facebook.fresco:animated-gif:+'
    compile 'com.android.support:design:26.0.0-alpha1'
    compile 'com.squareup.okhttp3:okhttp:3.9.0'
    compile 'com.google.code.gson:gson:2.8.2'
           

清單檔案注冊app