轮播图+Xrecalview

//布局

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


    <com.youth.banner.Banner
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="200dp">
    </com.youth.banner.Banner>


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

</LinearLayout>

//MainActivity

public class Frag_01 extends Fragment implements DataCall<List<Goods>> {

    private Banner banner;
    private XRecyclerView xrv;
    String tu1="http://www.zhaoapi.cn/images/quarter/ad1.png";
    String tu2="http://www.zhaoapi.cn/images/quarter/ad2.png";
    String tu3="http://www.zhaoapi.cn/images/quarter/ad3.png";
    String tu4="http://www.zhaoapi.cn/images/quarter/ad4.png";
    ArrayList<String> tlist = new ArrayList<>();
    String url="http://www.zhaoapi.cn/product/searchProducts?keywords=笔记本&page=1";
    ArrayList<Goods> list = new ArrayList<>();
    private ListPersenter listPersenter;
    private StagAdapter stagAdapter;
    private LinearLayoutManager linearLayoutManager;
    private GridLayoutManager gridLayoutManager;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.frag_01,container,false);

        banner = view.findViewById(R.id.banner);
        xrv = view.findViewById(R.id.xrv);

        tlist.add(tu1);
        tlist.add(tu2);
        tlist.add(tu3);
        tlist.add(tu4);
        banner.setImages(tlist);
        banner.setImageLoader(new Images());
        banner.start();

        //调用P层
        listPersenter = new ListPersenter(this);
        listPersenter.get(url);
        stagAdapter = new StagAdapter(getContext(), list);


        /*linearLayoutManager = new LinearLayoutManager(getContext());
        xrv.setLayoutManager(linearLayoutManager);
        xrv.setAdapter(stagAdapter);
        xrv.refresh();*/


        gridLayoutManager = new GridLayoutManager(getContext(),2);
        xrv.setLayoutManager(gridLayoutManager);
        xrv.setAdapter(stagAdapter);
        xrv.refresh();


        return view;

    }

    @Override
    public void success(List<Goods> goods) {
        xrv.loadMoreComplete();
        xrv.refreshComplete();
        list.addAll(goods);
        stagAdapter.notifyDataSetChanged();
    }

    @Override
    public void fail(Result result) {
        Toast.makeText(getActivity(),"失败",Toast.LENGTH_LONG).show();
    }

    class Images extends ImageLoader{
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            com.nostra13.universalimageloader.core.ImageLoader instance = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
            instance.displayImage((String) path,imageView);
        }
    }
}

//适配器

public class StagAdapter extends XRecyclerView.Adapter<StagAdapter.MyViewHolder> {

    private Context context;
    private ArrayList<Goods> list;

    public StagAdapter(Context context, ArrayList<Goods> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public StagAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(context, R.layout.item,null);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull StagAdapter.MyViewHolder myViewHolder, int i) {
        myViewHolder.tv1.setText(list.get(i).getTitle());
        myViewHolder.tv2.setText("¥"+list.get(i).getPrice()+"");
        String images = list.get(i).getImages();
        String[] split = images.split("\\|");
        Glide.with(context).load(split[0]).into(myViewHolder.iv1);
    }

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

    public class MyViewHolder extends RecyclerView.ViewHolder {

        private final ImageView iv1;
        private final TextView tv1;
        private final TextView tv2;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            iv1 = itemView.findViewById(R.id.iv1);
            tv1 = itemView.findViewById(R.id.tv1);
            tv2 = itemView.findViewById(R.id.tv2);
        }
    }
}

//MApp

public class MApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();
        ImageLoader instance = ImageLoader.getInstance();
        instance.init(build);
    }
}

//接口

public interface DataCall<T> {
    void success(T t);
    void fail(Result result);
}

Goods

public class Goods {

        /**
         * bargainPrice : 11800
         * createtime : 2017-10-10T17:33:37
         * detailUrl : https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends
         * images : https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg
         * itemtype : 0
         * pid : 57
         * price : 5199
         * pscid : 40
         * salenum : 4343
         * sellerid : 1
         * subhead : 【i5 MX150 2G显存】全高清窄边框 8G内存 256固态硬盘 支持指纹识别 预装WIN10系统
         * title : 小米(MI)Air 13.3英寸全金属轻薄笔记本(i5-7200U 8G 256G PCle SSD MX150 2G独显 FHD 指纹识别 Win10)银

         */

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

        public int getBargainPrice() {
            return bargainPrice;
        }

        public void setBargainPrice(int 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 int getPrice() {
            return price;
        }

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

}

Utils

public class Utils {
    public static String get(String url) {
        OkHttpClient okHttpClient = new OkHttpClient();
        Request build = new Request.Builder().url(url).get().build();
        Call call = okHttpClient.newCall(build);
        try {
            Response response = call.execute();
            return response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
}

//Modle

public class ListModle {
    public static Result get(String url) {
        String s = Utils.get(url);
        Type type = new TypeToken<Result<List<Goods>>>() {
        }.getType();
        Gson gson = new Gson();
        Result result = gson.fromJson(s, type);
        return result;
    }
}

//Persenter

public class ListPersenter {

    private DataCall dataCall;

    public ListPersenter(DataCall dataCall) {
        this.dataCall = dataCall;
    }

    Handler handler = new Handler(Looper.getMainLooper()){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            Result result = (Result) msg.obj;
            if (result.getCode().equals("0")){
                dataCall.success(result.getData());
            }else {
                dataCall.fail(result);
            }
        }


    };

    public void get(final String url) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                Result result = ListModle.get(url);
                Message message = handler.obtainMessage();
                message.obj=result;
                handler.sendMessage(message);
            }
        }).start();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值