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=“
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) {
}
}