XRecyclerView

package com.bwie.zjj.myjd.fragment;


import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.bwie.zjj.myjd.R;
import com.bwie.zjj.myjd.activity.SaoActivity;
import com.bwie.zjj.myjd.adapter.ProductAdapter;
import com.bwie.zjj.myjd.bean.ProductBean;
import com.bwie.zjj.myjd.common.Api;
import com.bwie.zjj.myjd.utils.OkHttpUtils;
import com.bwie.zjj.myjd.utils.RequestCallback;
import com.google.gson.Gson;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.io.IOException;
import java.util.HashMap;

import okhttp3.Call;
import okhttp3.Response;

/**
 * A simple {@link Fragment} subclass.
 */
public class OneFragment extends Fragment implements View.OnClickListener, XRecyclerView.LoadingListener {


    private ImageView img_sao;
    private XRecyclerView xRecyclerView;
    private Handler handler = new Handler();
    private ProductBean productBean;
    private ProductAdapter productAdapter;
    private int page = 1;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_one, container, false);
        img_sao = view.findViewById(R.id.img_sao);
        xRecyclerView = view.findViewById(R.id.xRecyclerView);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        img_sao.setOnClickListener(this);

        xRecyclerView.setLoadingListener(this);
        xRecyclerView.setLoadingMoreEnabled(true);

        requestProduct();
    }

    //二维码界面
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.img_sao:
                startActivity(new Intent(getActivity(),SaoActivity.class));
                break;
        }

    }

    private void requestProduct() {
        HashMap<String, String> params = new HashMap<>();
        params.put("keywords", "手机");
        params.put("page", page+"");

        OkHttpUtils.getInstance().postData(Api.PRODUCT_URL, params, new RequestCallback() {
            @Override
            public void failure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) {
                String result = null;
                if (response.code() == 200) {
                    try {
                        result = response.body().string();
                        System.out.println("result:" + result);
                        parseProductBean(result);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }


        });
    }

    private void parseProductBean(String result) {
        productBean = new Gson().fromJson(result, ProductBean.class);

        handler.post(new Runnable() {
            @Override
            public void run() {
                fillDatas();
            }


        });
    }
    private void fillDatas() {
        System.out.println("page:" + page);
        xRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        //recyclervie 集listview,gridview和瀑布流效果的view
        if (page == 1) {
            productAdapter = new ProductAdapter(getActivity(), productBean.data);
            xRecyclerView.setAdapter(productAdapter);
            xRecyclerView.refreshComplete();//刷新完成
        } else {
            if (productAdapter != null) {
                productAdapter.loadData(productBean.data);
                xRecyclerView.loadMoreComplete();
            }
        }
    }


    @Override
    public void onRefresh() {
        page=1;
        requestProduct();
    }

    @Override
    public void onLoadMore() {
        page++;
        requestProduct();
    }
}


/ProductAdapter 
package com.bwie.zjj.myjd.adapter;

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

import com.bumptech.glide.Glide;
import com.bwie.zjj.myjd.R;
import com.bwie.zjj.myjd.bean.ProductBean;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.List;

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

    private Context context;
    private List<ProductBean.Product> list;

    public ProductAdapter(Context context, List<ProductBean.Product> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.product_item_layout, parent, false);


        MyViewHolder myViewHolder = new MyViewHolder(view);

        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        ProductBean.Product product = list.get(position);
        //with 绑定上下文,load加载网络资源(url),into:把bitmap设置给当前控件
        String[] imageUrls = product.images.split("\\|");

        if (imageUrls != null && imageUrls.length > 0) {

            Glide.with(context).load(imageUrls[0]).into(holder.iv);//
        }

        holder.tv.setText(product.title);

    }

    @Override
    public int getItemCount() {
        return list.size() == 0 ? 0 : list.size();
    }

    public void loadData(List<ProductBean.Product> data) {

        if (this.list!=null){
            this.list.addAll(data);
            notifyDataSetChanged();
        }
    }


    class MyViewHolder extends RecyclerView.ViewHolder {

        private ImageView iv;
        private TextView tv;

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

            iv = itemView.findViewById(R.id.iv);
            tv = itemView.findViewById(R.id.tv);
        }
    }


}

/ProductBean 
package com.bwie.zjj.myjd.bean;

import java.util.List;

public class ProductBean {
    public String msg;
    public String code;
    public List<Product> data;

    public class Product{
        public String title;
        public String images;
    }
}

/RequestCallback 
package com.bwie.zjj.myjd.utils;


import java.io.IOException;

import okhttp3.Call;
import okhttp3.Response;

public interface RequestCallback {
    void failure(Call call, IOException e);
    void onResponse(Call call, Response response);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值