1. 程式人生 > >Recyclerview+Json資料雙集合處理

Recyclerview+Json資料雙集合處理

1.bean類
package bw.com.yk.bean;

import java.util.List;

public class PubuBean {

private String msg;
private String code;
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 List<DataBean> getData() {
    return data;
}

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

public static class DataBean {


    private String sellerName;
    private String sellerid;
    private List<ListBean> list;

    public String getSellerName() {
        return sellerName;
    }

    public void setSellerName(String sellerName) {
        this.sellerName = sellerName;
    }

    public String getSellerid() {
        return sellerid;
    }

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

    public List<ListBean> getList() {
        return list;
    }

    public void setList(List<ListBean> list) {
        this.list = list;
    }

    public static class ListBean {

        private double bargainPrice;
        private String createtime;
        private String detailUrl;
        private String images;
        private int num;
        private int pid;
        private double price;
        private int pscid;
        private int selected;
        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 getNum() {
            return num;
        }

        public void setNum(int num) {
            this.num = num;
        }

        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 getSelected() {
            return selected;
        }

        public void setSelected(int selected) {
            this.selected = selected;
        }

        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;
        }
    }
}

}

2.pubClallBack介面
public interface PbCallBack {
void onSuccess3(List<PubuBean.DataBean.ListBean> listBeans);
void onFailer(String error);
}

3.View層
public interface PbView {
void onSuccess3(List<PubuBean.DataBean.ListBean> listBeans);
void onFailer(String error);
}

4.Model層
public class PbModel {
private String path=“

http://www.zhaoapi.cn/product/getCarts?uid=71”;
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};

public void showpb(final PbCallBack pbCallBack){
    OkHttp.createget(path, new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {

        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            final String string = response.body().string();
            handler.post(new Runnable() {
                @Override
                public void run() {
                    Gson gson = new Gson();
                    PubuBean pubuBean = gson.fromJson(string, PubuBean.class);
                    List<PubuBean.DataBean> data = pubuBean.getData();
                    List<PubuBean.DataBean.ListBean> list = new ArrayList<>();
                    for (PubuBean.DataBean haha:data) {
                        List<PubuBean.DataBean.ListBean> list1 = haha.getList();
                        list.addAll(list1);
                    }
                    if (list!=null){
                        pbCallBack.onSuccess3(list);
                    }else {
                        pbCallBack.onFailer("失敗");
                    }
                }
            });
        }
    });
}

}

5.Presenter層
public class PbPresenter {
private PbView pbView;
private PbModel pbModel;

public PbPresenter(PbView pbView) {
    this.pbView = pbView;
    pbModel= new PbModel();
}
public void showpb(){
    pbModel.showpb(new PbCallBack() {
        @Override
        public void onSuccess3(List<PubuBean.DataBean.ListBean> listBeans) {
            pbView.onSuccess3(listBeans);
        }

        @Override
        public void onFailer(String error) {
            pbView.onFailer(error);
        }
    });
}

}

6.adapter
public class PbAdapter extends RecyclerView.Adapter {
private Context context;
private List<PubuBean.DataBean.ListBean> listBeans;
List listimage = new ArrayList<>();
public PbAdapter(Context context, List<PubuBean.DataBean.ListBean> listBeans) {
this.context = context;
this.listBeans = listBeans;
}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view=null;
    RecyclerView.ViewHolder viewHolder = null;
    view = View.inflate(context,R.layout.pb,null);
    viewHolder = new MyHolder3(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {


        String images = listBeans.get(i).getImages();
        String[] split = images.split("\\|");
        for (int j = 0; j <split.length ; j++) {
            listimage.add(split[j]);
        }
        if (listBeans.size()>0 && listBeans!=null){
            ((MyHolder3)viewHolder).textView.setText(listBeans.get(i).getCreatetime());
            Glide.with(context).load(listimage.get(i)).into(((MyHolder3)viewHolder).imageView);
        }




}

@Override
public int getItemCount() {
    return listBeans.size();
}
private class MyHolder3 extends RecyclerView.ViewHolder {

    private final ImageView imageView;
    private final TextView textView;

    public MyHolder3(@NonNull View itemView) {
        super(itemView);
        imageView = itemView.findViewById(R.id.image11);
        textView = itemView.findViewById(R.id.text1);
        ViewGroup.LayoutParams params = textView.getLayoutParams();
        params.width=(1000)/3;
        params.height= (int) (Math.random()*100);
        textView.setLayoutParams(params);
    }
}

}

7.Fragment
public class Frag01 extends Fragment implements PbView {

private PbPresenter pbPresenter;
private View view;
private RecyclerView recyclerView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.fragment_frag01, container, false);
    initView();
    pbPresenter=new PbPresenter(this);
    pbPresenter.showpb();
    return view;
}

private void initView() {
    recyclerView = view.findViewById(R.id.pbrecy);
    final PullToRefreshLayout pullToRefreshLayout = view.findViewById(R.id.pull);
    pullToRefreshLayout.setRefreshListener(new BaseRefreshListener() {
        @Override
        public void refresh() {
            new Handler().postAtTime(new Runnable() {
                @Override
                public void run() {
                    pullToRefreshLayout.finishRefresh();
                }
            },2000);
            pullToRefreshLayout.finishRefresh();
        }

        @Override
        public void loadMore() {
            new Handler().postAtTime(new Runnable() {
                @Override
                public void run() {
                    pullToRefreshLayout.finishLoadMore();
                }
            },2000);
        }
    });
}

@Override
public void onSuccess3(List<PubuBean.DataBean.ListBean> listBeans) {
    StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(staggeredGridLayoutManager);
    PbAdapter pbAdapter = new PbAdapter(getActivity(),listBeans);
    recyclerView.setAdapter(pbAdapter);
}

@Override
public void onFailer(String error) {

}

}