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

Fragment中RecyclerView无法加载显示数据库存储的列表数据问题求助

问题排查及解决方案

核心错误(直接导致列表不显示)

你的ActivityAdapter中getItemCount方法固定返回0,RecyclerView会判定列表没有数据项,不会执行任何渲染逻辑:

@Override
public int getItemCount() {
    return 0;
}

修改方案

修改为返回实际列表长度:

@Override
public int getItemCount() {
    // 二选一即可,两个列表长度始终一致
    return activityName == null ? 0 : activityName.size();
    // 或 return activityTime == null ? 0 : activityTime.size();
}

其他影响功能的问题

  • 新增数据后列表不刷新
    Fragment的onCreateView仅在视图首次创建时执行一次,你从AddActivity新增数据返回Fragment时,不会重新读取数据库刷新列表。

    修改方案

    在ActivityLogSection中新增onResume生命周期方法,每次页面可见时重新加载数据并刷新适配器:

    @Override
    public void onResume() {
        super.onResume();
        // 先清空旧数据
        activityName.clear();
        activityTime.clear();
        // 重新读取数据库
        storeActivityDataInArray();
        // 通知适配器数据变更
        if (activityAdapter != null) {
            activityAdapter.notifyDataSetChanged();
        }
    }
    
  • 添加数据后未返回原页面
    AddActivity中点击添加按钮存储数据后,没有关闭当前页,会一直停留在添加页面。

    修改方案

    在addBtn的点击事件末尾添加finish():

    addBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DBHelper dbHelper = new DBHelper(AddActivity.this);
            String activityName = etActivityName.getText().toString().trim();
            String activityTime = simpleDateFormat.format(calendar.getTime());
            dbHelper.addActivity(activityName, activityTime);
            // 新增此行,关闭添加页回到Fragment
            finish();
        }
    });
    
  • 日期格式错误
    你使用的日期格式符yyyy-mm-dd HH:mm中小写mm代表分钟,大写MM才代表月份,会导致月份位置显示的是分钟值。

    修改方案

    把所有用到该格式的地方统一修改为:

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    
  • 类型安全隐患
    ActivityAdapter中的ArrayList未指定泛型,属于裸类型,容易引发类型转换异常。

    修改方案

    修改属性定义和构造方法参数:

    // 修改属性定义
    private ArrayList<String> activityName, activityTime;
    // 修改构造方法
    public ActivityAdapter(Context context, ArrayList<String> activityName, ArrayList<String> activityTime) {
        this.context = context;
        this.activityName = activityName;
        this.activityTime = activityTime;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:00:03