package com.example.ggq.gaoguoqing20180811;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.example.ggq.gaoguoqing20180811.adapter.ProductAdapter;
import com.example.ggq.gaoguoqing20180811.bean.ProductBean;
import com.example.ggq.gaoguoqing20180811.common.Api;
import com.example.ggq.gaoguoqing20180811.utils.OkHttpUtil;
import com.google.gson.Gson;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.io.IOException;
import java.util.HashMap;
import okhttp3.Response;
public class GoodsActivity extends AppCompatActivity implements XRecyclerView.LoadingListener, ProductAdapter.OnItemClickListener {
private XRecyclerView xrecycler_view;
private int page = 1;
private static final String TAG = "GoodsActivity";
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
private ProductBean productBean;
private ProductAdapter adapter;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_goods);
initView();
xrecycler_view.setLoadingMoreEnabled(true);
xrecycler_view.setLoadingListener(this);
requestProduct();
sp = getSharedPreferences("user", MODE_PRIVATE);
sp.getBoolean("b",true);
}
private void requestProduct() {
HashMap<String, String> params = new HashMap<>();
params.put("keywords","笔记本");
params.put("page",page+"");
OkHttpUtil.getInstance().postData(Api.PRODUCT_URL, params, new OkHttpUtil.RequestCallback() {
@Override
public void onSuccess(Response response) {
if(response.code() == 200){
try {
String result = response.body().string();
Log.d(TAG, "onSuccess: "+result);
parseResult(result);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onError(IOException e) {
Log.d(TAG, "onError: "+"数据请求失败");
}
});
}
private void parseResult(String result) {
productBean = new Gson().fromJson(result, ProductBean.class);
handler.post(new Runnable() {
@Override
public void run() {
fillDatas();
}
});
}
private void fillDatas() {
if(true){
xrecycler_view.setLayoutManager(new LinearLayoutManager(this));
}else {
xrecycler_view.setLayoutManager(new GridLayoutManager(this,2));
}
//xrecycler_view.setLayoutManager(new LinearLayoutManager(this));
if(page == 1){
adapter = new ProductAdapter(this, productBean.getData());
xrecycler_view.setAdapter(adapter);
xrecycler_view.refreshComplete();
}else {
if(adapter != null){
adapter.loadData(productBean.getData());
xrecycler_view.loadMoreComplete();
}
}
adapter.setOnItemClickListener(this);
}
private void initView() {
xrecycler_view = findViewById(R.id.xrecycler_view);
}
public void sao(View view) {
startActivity(new Intent(this,SaoActivity.class));
}
public void switcher(View view) {
//切换
sp.edit().putBoolean("b",false).commit();
}
@Override
public void onRefresh() {
page = 1;
requestProduct();
}
@Override
public void onLoadMore() {
page++;
requestProduct();
}
@Override
public void onItemClick(int position) {
ProductBean.DataBean product = productBean.getData().get(position);
Toast.makeText(this, ""+product.getTitle(), Toast.LENGTH_SHORT).show();
}
}
适配器
package com.example.ggq.gaoguoqing20180811.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.example.ggq.gaoguoqing20180811.R;
import com.example.ggq.gaoguoqing20180811.bean.ProductBean;
import java.util.List;
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHolder>{
private Context context;
private List<ProductBean.DataBean> list;
private OnItemClickListener onItemClickListener;
public ProductAdapter(Context context, List<ProductBean.DataBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.product_item_layout, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
ProductBean.DataBean dataBean = list.get(position);
holder.title.setText(dataBean.getTitle());
holder.desc.setText(dataBean.getSubhead());
//holder.price.setText(dataBean.getPrice());
Glide.with(context).load(dataBean.getImages()).into(holder.iv_image);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(onItemClickListener != null){
onItemClickListener.onItemClick(position);
}
}
});
}
@Override
public int getItemCount() {
return list.size() == 0 ? 0 : list.size();
}
public void loadData(List<ProductBean.DataBean> data){
if(this.list != null){
this.list.addAll(data);
notifyDataSetChanged();
}
}
class ViewHolder extends RecyclerView.ViewHolder{
private ImageView iv_image;
private TextView title;
private TextView desc;
private TextView price;
public ViewHolder(View itemView) {
super(itemView);
iv_image = itemView.findViewById(R.id.iv_image);
title = itemView.findViewById(R.id.tv_title);
desc = itemView.findViewById(R.id.tv_desc);
price = itemView.findViewById(R.id.tv_price);
}
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public interface OnItemClickListener{
void onItemClick(int position);
}
}