【问题标题】:How to show a recyclerview on fragment from sqlite using cursor and looping如何使用光标和循环显示来自 sqlite 的片段的 recyclerview
【发布时间】:2019-05-23 22:43:35
【问题描述】:

我在回收站视图中添加了一个数据,光标位于视图寻呼机的片段上,但回收站视图项目未显示。我使用循环从 sqlite 获取数据。

我尝试使用 for 和 while for 循环,但 recyclerview 仍然没有显示。我认为可能是sqlite中不存在数据,但检查后数据存在。

private void prepareNamaNilaiData(String kelas, String mapel) {
    Cursor c = MainActivity.myClass.lihatNamaNilai(kelas, mapel, "Pengetahuan");
    NamaNilai namaNilai[] = new NamaNilai[c.getCount()];
    int i = 0;
    c.moveToFirst();
    if (c.getCount() != 0) {
        while (!c.isAfterLast()) {
            //showMessage("BELUM ADA DATA", "Belum ada nilai pengetahuan "+ c.getString(0) + " pada kelas "+ c.getString(1));
            namaNilai[i] = new NamaNilai(c.getString(0), c.getString(1));
            namaNilaiList.add(namaNilai[i]);
            i++;
            c.moveToNext();
        }
        namaNilaiAdapter.notifyDataSetChanged();
        return;
    } else {
        showMessage("BELUM ADA DATA", "Belum ada nilai pengetahuan " + mapel + " pada kelas " + kelas);
    }
}

这是我调用 prepareNamaNilaiData 方法时的代码

RecyclerView recyclerView = rootView.findViewById(R.id.rvNamaPengetahuan);
    namaNilaiAdapter = new NamaNilaiAdapter(namaNilaiList);
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity().getApplicationContext());
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setAdapter(namaNilaiAdapter);
    recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), LinearLayoutManager.VERTICAL));

    try {
        String message1 = getArguments().getString(KEY_KELAS);
        String message2 = getArguments().getString(KEY_MAPEL);
        if ((message1 != null) && (message2 != null)) {
            prepareNamaNilaiData(message1,message2);
        } else {
            prepareNamaNilaiData("-", "-");
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }

这是我在 prepareNamaNilaiData 上调用的光标代码

 public Cursor lihatNamaNilai(String kelas, String mapel, String jenis_nilai) {
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor c = db.rawQuery("SELECT DISTINCT NAMA_NILAI, TANGGAL FROM " + TABLE_Nilai 
                            + " WHERE KELAS = ? AND MAPEL = ? AND JENIS_NILAI = ? ORDER BY NAMA_NILAI"
                            ,new String[] {kelas, mapel, jenis_nilai});
    return c;
}

我希望循环可以显示从 sqlite 到 recyclerview 所需的所有数据。但是数据没有出现在recyclerview中

logcat 上没有显示错误。

【问题讨论】:

    标签: android sqlite android-fragments android-recyclerview database-cursor


    【解决方案1】:

    当循环结束时尝试Log.e(“count===“,namaNilaiList.size()),并检查你的适配器,也许没有声明 LayoutInflater ...只是也许。

    【讨论】:

    • Log.e(“count===”,namaNilaiList.size()) 不工作,不要读取数据库。
    • 在我的适配器中声明了LayoutInflater。你还有其他解决方案吗?
    • 我看到你的代码' while (!c.isAfterLast()) { //showMessage("BELUM ADA DATA", "Belum ada nilai pengetahuan "+ c.getString(0) + " pada kelas "+ c.getString(1)); namaNilai[i] = new NamaNilai(c.getString(0), c.getString(1)); namaNilaiList.add(namaNilai[i]);我++; c.moveToNext(); }' 为什么不直接将数据输入到列表中?像'namaNilaiList.add(new NamaNilai(c.getString(0), c.getString(1)););'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2019-07-01
    • 1970-01-01
    • 2013-04-25
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多