android - 未在 recyclerview 中检索来自 SQLite 的数据

标签 android sqlite

fragment 类

public class My_Health extends Fragment {

DatabaseHandler db;

protected RecyclerView mRecyclerView;


@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.home, container, false);

    RecyclerView recList = (RecyclerView) v.findViewById(R.id.cardlist_home);
    recList.setHasFixedSize(true);
    LinearLayoutManager llm = new LinearLayoutManager(getActivity());
    llm.setOrientation(LinearLayoutManager.VERTICAL);
    recList.setLayoutManager(llm);

    mRecyclerView = (RecyclerView) v.findViewById(R.id.cardlist_home);
    mRecyclerView.setHasFixedSize(true);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    mRecyclerView.setItemAnimator(new DefaultItemAnimator());
    mRecyclerView.setAdapter(new HomeCardAdapter(db.getAllData(), R.layout.cardview_home));


    FloatingActionButton fab = (FloatingActionButton) v.findViewById(R.id.addrecordfab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivity(), AddRecord.class);
            startActivity(intent);
        }
    });
    return v;
}
}

DatabaseHandler.java

public List<UserInfo> getAllData() {
    List<UserInfo> list = new ArrayList<>();
    String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;

    SQLiteDatabase db=this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    UserInfo bean = null;

    while (cursor.moveToNext()) {
        int index0 = cursor.getColumnIndex(KEY_DATE);
        int index1 = cursor.getColumnIndex(KEY_MOBILE_NO);
        int index2 = cursor.getColumnIndex(KEY_DIAGNOSIS);

        String date = cursor.getString(index0);
        String mobile_no = cursor.getString(index1);
        String heading = cursor.getString(index2);
        bean = new UserInfo(date,mobile_no,heading);
        list.add(bean);
    }
    return list;
}

}

当我运行应用程序时,它会停止

日志猫

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rashim12000.waytofreedom.swasthyatipot/com.rashim12000.waytofreedom.swasthyatipot.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.rashim12000.waytofreedom.swasthyatipot.helper.DatabaseHandler.getAllData()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5257) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.rashim12000.waytofreedom.swasthyatipot.helper.DatabaseHandler.getAllData()' on a null object reference at com.rashim12000.waytofreedom.swasthyatipot.fragment.My_Health.onCreateView(My_Health.java:55) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1965)

最佳答案

您正在调用

db.getAllData()

在行

mRecyclerView.setAdapter(new HomeCardAdapter(db.getAllData(),R.layout.cardview_home));

但尚未初始化数据库

关于android - 未在 recyclerview 中检索来自 SQLite 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33806291/

相关文章:

android - TextView Ellipsize (...) 不工作

python - 为 Sqlite3 Python 更新多个值的优雅方式

android - SQLiteDatabase 或 XML(保存)?

sqlite - 正确的 SQLite 语法 - UPDATE SELECT with WHERE EXISTS

sql - 具有空值的复合唯一约束

java - 当我的应用程序被杀死时有机会做某事

android - 使用 Gradle 在 Dalvik 中自定义类加载(Android 新构建系统)

java - android - onactivity结果viewpager

c# - 从大文件中删除冗余数据

android - 未设置应用程序图标,它始终显示默认的绿色 android 图标