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

RecyclerView调用submitList后未填充数据问题求助

问题分析与解决:RecyclerView不显示数据

1. 核心问题:返回了未配置的新Binding实例

你的Fragment代码里犯了一个关键错误:你先创建了一个binding对象并完成了RecyclerView的配置,但最后返回的是重新inflate的全新Binding实例,导致之前的适配器设置、数据绑定全部失效。

看这段代码:

HomeFragmentBinding binding = HomeFragmentBinding.inflate(inflater);
// 这里用该binding配置了rvProducts、适配器等
return HomeFragmentBinding.inflate(inflater).getRoot(); // 重新创建了一个未配置的Binding

修复方式:直接返回你初始化并配置好的那个Binding的根视图:

return binding.getRoot();

2. 其他潜在问题检查

(1) Product类需正确重写equals和hashCode

你的DiffUtil回调中使用oldItem.equals(newItem)判断内容是否一致,如果Product类没有重写equals方法,默认会用引用比较,导致DiffUtil无法识别数据变化,影响列表更新。

示例重写代码:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Product product = (Product) o;
    return getId() == product.getId() &&
            Objects.equals(getTitle(), product.getTitle()) &&
            Objects.equals(getCategory(), product.getCategory()) &&
            Objects.equals(getPrice(), product.getPrice());
}

@Override
public int hashCode() {
    return Objects.hash(getId(), getTitle(), getCategory(), getPrice());
}

(2) 价格字段类型适配

如果getPrice()返回的是int/double等数字类型,直接调用setText()会被Android当成资源ID处理,导致文本不显示甚至崩溃。需要转换为字符串:

// 替换原bind方法中的价格设置代码
binding.txtPriceProduct.setText(String.valueOf(itemProduct.getPrice()));
// 如需格式化价格可改为:
// binding.txtPriceProduct.setText(String.format("%.2f", itemProduct.getPrice()));

修复后的Fragment核心代码

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    // 建议加上container和attachToRoot参数,避免布局参数异常
    HomeFragmentBinding binding = HomeFragmentBinding.inflate(inflater, container, false);

    tabLayout = binding.tabLayout;
    rvProducts = binding.rvProducts;

    setupRecyclerView();

    viewModel.getAllProducts();

    viewModel.products.observe(getViewLifecycleOwner(), products -> {
        Log.d("HSV", products.toString());
        productsAdapter.submitList(products);
    });

    return binding.getRoot();
}

内容的提问来源于stack exchange,提问作者Helvio Siqueira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:17:03