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