展示商品列表

private Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
    }
};
private ProductBean productBean;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    initView();

}

private void initView() {
    product = findViewById(R.id.productRv);
    neir = findViewById(R.id.edit_nr);
}


public void sousuo(View view) {

    HashMap<String,String> parms = new HashMap<>();
    parms.put("keywords",neir.getText().toString());

    OkHttpUtils.getinstance().getData(API.PRODUCT_URL, parms, new RequestCallBack() {
        @Override
        public void failure(Call call, IOException e) {

        }

        @Override
        public void onResponse(Call call, Response response) {
         String request = null;
            if(response.code()==200){
                try {
                    request = response.body().string();

                    //解析
                    Productjson(request);

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }


        }
    });


}

private void Productjson(String request) {

    productBean = new Gson().fromJson(request, ProductBean.class);

    Log.i("xxx", productBean.data.get(0).title);

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

}

private void fileDatas() {

    ProductAdapter adapter = new ProductAdapter(LoginActivity.this, productBean.data);
    product.setLayoutManager(new GridLayoutManager(this,2));

    product.setAdapter(adapter);

适配器

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

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

    public ProductAdapter(Context context, List<ProductBean.Product> list) {

        this.context = context;
        this.list = list;

    }

    /**
     * 创建viewholder 和渲染布局
     *
     * @param parent
     * @param viewType
     * @return
     */
    @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;
    }


    /**
     * 绑定viewholder,作用:展示数据
     *
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, final 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);

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


    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    public interface OnItemClickListener {
        void onItemClick(int position);
    }
}
 

猜你喜欢

转载自blog.csdn.net/Mazzze/article/details/81587949