retrofit+rxjava

本文介绍了一个基于Android的应用中实现商品搜索与展示的功能。通过使用Retrofit进行网络请求,获取商品数据,并利用RecyclerView和XRecyclerView进行商品列表的展示。文章详细展示了如何设置布局、绑定视图、处理数据请求及响应,以及如何实现商品点击事件跳转到详情页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class MainActivity extends BaseActivity {
    @BindView(R.id.img_menu)
    ImageView imgMenu;
    @BindView(R.id.edit)
    EditText edit;
    @BindView(R.id.search_text)
    TextView searchText;
    @BindView(R.id.xrecy)
    XRecyclerView xrecy;
    int page = 1;
    int count = 5;
    private GoodsAdapter goodsAdapter;

    @Override
    protected int getContentView() {
        return R.layout.activity_main;
    }

    @Override
    protected void initview() {
        ButterKnife.bind(this);
    }

    @Override
    protected void initData() {

    }

    private void initsomedata() {
        String content = edit.getText().toString().trim();
        IRequest iRequest = RetrofitUtils.getInstance().create(IRequest.class);
        iRequest.getGoods(content, "" + page, "5")
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<Goods>() {
                    @Override
                    public void accept(Goods goods) throws Exception {
                        if (goods != null) {
                            List<Goods.ResultBean> list = goods.getResult();
                            GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 2, GridLayoutManager.VERTICAL, false);
                            xrecy.setLayoutManager(gridLayoutManager);
                            goodsAdapter = new GoodsAdapter(MainActivity.this, list);
                            xrecy.setAdapter(goodsAdapter);
                        }
                    }
                });
    }




    @OnClick(R.id.search_text)
    public void onViewClicked() {
        String edit_content = edit.getText().toString().trim();

        if (TextUtils.isEmpty(edit_content)) {
            Toast.makeText(this, "输入内容不可为空", Toast.LENGTH_SHORT).show();
        } else {
            IRequest iRequest = RetrofitUtils.getInstance().create(IRequest.class);
            iRequest.getGoods(edit_content, "" + page, "5")
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Consumer<Goods>() {
                        @Override
                        public void accept(Goods goods) throws Exception {
                            if (goods != null) {
                                List<Goods.ResultBean> list = goods.getResult();
                                GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 2, GridLayoutManager.VERTICAL, false);
                                xrecy.setLayoutManager(gridLayoutManager);
                                goodsAdapter = new GoodsAdapter(MainActivity.this, list);
                                xrecy.setAdapter(goodsAdapter);
                                goodsAdapter.setOnGoodItemClick(new GoodsAdapter.onGoodItemClick() {
                                    @Override
                                    public void onItemClick(int i) {
                                        Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
                                        intent.putExtra("commodityId", i);
                                        startActivity(intent);
                                    }
                                });

                            }
                            xrecy.setLoadingListener(new XRecyclerView.LoadingListener() {
                                @Override
                                public void onRefresh() {
                                    new Handler().postDelayed(new Runnable() {
                                        @Override
                                        public void run() {
                                            page=1;
                                            initsomedata();
                                            xrecy.refreshComplete();
                                        }
                                    }, 2000);
                                }

                                @Override
                                public void onLoadMore() {
                                    page++;
                                    initsomedata();
                                    xrecy.loadMoreComplete();
                                }
                            });
                        }
                    });

        }
    }


}
public class GoodsAdapter extends RecyclerView.Adapter<GoodsAdapter.ViewHolder> {

    public Context context;
    public List<Goods.ResultBean> list;

    public GoodsAdapter(Context context, List<Goods.ResultBean> list) {
        this.context = context;
        this.list = list;
    }

    public interface onGoodItemClick{
        void onItemClick(int i);

    }

    public onGoodItemClick monGoodItemClick;

    public void setOnGoodItemClick(onGoodItemClick onGoodItemClick){
       monGoodItemClick=onGoodItemClick;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.goods_item, null);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
    }

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

        viewHolder.goods_item_img.setImageURI(list.get(i).getMasterPic());
        viewHolder.goods_item_title.setText(list.get(i).getCommodityName());
        viewHolder.goods_item_price.setText("¥:"+list.get(i).getPrice());
        viewHolder.goods_item_shou.setText("已售"+list.get(i).getSaleNum()+"件");
        viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int commodityId = list.get(i).getCommodityId();
                if (monGoodItemClick!=null){
                    monGoodItemClick.onItemClick(commodityId);
                }
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder{


        private final TextView goods_item_title;
        private final TextView goods_item_price;
        private final TextView goods_item_shou;
        private final SimpleDraweeView goods_item_img;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            goods_item_img = itemView.findViewById(R.id.goods_item_img);
            goods_item_title = itemView.findViewById(R.id.goods_item_title);
            goods_item_price = itemView.findViewById(R.id.goods_item_price);
            goods_item_shou = itemView.findViewById(R.id.goods_item_shou);
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值