You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Activity向RecyclerView Adapter传递并接收数据?

解决RecyclerView Adapter接收Activity数据的问题(替代错误的Intent方式)

嘿,你之前用Intent启动CarrinhoItemPedidoAdapter的方式完全搞错啦!Adapter根本不是Activity或者Service这类可以通过startActivity()启动的组件,咱们得换个直接的思路——通过Adapter的构造方法或者自定义方法直接传递数据就行,下面给你一步步讲怎么改:

第一步:给Adapter添加数据传递的方法

你的Adapter目前是通过构造方法接收初始的List<Pedidos>,如果要动态添加单个商品数据,可以给Adapter加一个添加数据的方法;如果是替换整个列表,就加一个更新列表的方法。

方式1:添加单个商品项

在CarrinhoItemPedidoAdapter里新增这个方法:

// 向Adapter的列表中添加单个订单商品
public void addPedidoItem(Pedidos newPedido) {
    mUploadsPedidoCliente.add(newPedido);
    // 通知RecyclerView刷新新添加的那一项,比notifyDataSetChanged()更高效
    notifyItemInserted(mUploadsPedidoCliente.size() - 1);
}

方式2:替换整个订单列表(如果需要批量更新)

如果需要一次性替换所有数据,可以加这个方法:

// 替换Adapter的整个订单列表
public void setPedidosList(List<Pedidos> newPedidosList) {
    mUploadsPedidoCliente.clear();
    mUploadsPedidoCliente.addAll(newPedidosList);
    notifyDataSetChanged(); // 通知RecyclerView刷新所有项
}

第二步:在Activity里直接给Adapter传递数据

首先你得在PedidoDetalhesActivity里已经初始化好了RecyclerView和Adapter,比如:

// 假设这部分初始化代码已经在你的Activity里了
List<Pedidos> pedidoItemList = new ArrayList<>();
CarrinhoItemPedidoAdapter pedidoAdapter = new CarrinhoItemPedidoAdapter(this, pedidoItemList);
// 绑定到RecyclerView
RecyclerView recyclerView = findViewById(R.id.你的RecyclerViewID);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(pedidoAdapter);

然后修改你原来的confirmar_pedido点击事件,删掉Intent相关的代码,换成直接调用Adapter的方法:

confirmar_pedido.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // 1. 先把你要传递的数据封装成Pedidos对象
        Pedidos novoItemPedido = new Pedidos();
        novoItemPedido.setIdProd(up.getmKey().toString().trim()); // 商品ID
        novoItemPedido.setDescricao(value); // 商品名称
        novoItemPedido.setPrice(convertendo); // 商品价格
        // 记得补充设置quantity(数量),根据你的业务逻辑赋值

        // 2. 直接调用Adapter的方法添加数据
        pedidoAdapter.addPedidoItem(novoItemPedido);
    }
});

关键提醒

Intent是Android用来在不同组件(Activity、Service、BroadcastReceiver)之间传递数据的工具,而RecyclerView Adapter只是一个负责把数据绑定到UI上的辅助类,属于当前Activity的一部分,所以直接通过方法调用传递数据才是正确的姿势~

内容的提问来源于stack exchange,提问作者Gabriel Nogueira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:46:35