在android studio中自定义listview令人困惑

问题描述 投票:0回答:2

我的db是null的问题是什么?有说Cursor cursor = myDb.getData(select * from Donation_Details); myDb : null,它弹出下面的错误。

myDb:Null

这是运行时错误说的

Runtime Error

这是我分配和声明数据库时的qazxsw poi。

DatabaseHelper

当我想从数据库中获取数据时,这是 private static final String DATABASE_NAME = "eBossCharity.db"; private static final int DATABASE_VERSION = 1; public dbOpenHelper(Context context){ super(context,DATABASE_NAME,null,DATABASE_VERSION); }

dbAccess

当我想将数据显示到自定义列表视图时,这是public dbOpenHelper openHelper; public SQLiteDatabase db; private static dbAccess instance; public dbAccess(Context context) { this.openHelper = new dbOpenHelper(context); } public static dbAccess getInstance(Context context) { if (instance == null) { instance = new dbAccess(context); } return instance; } public Cursor getData(String sql) { db = openHelper.getReadableDatabase(); return db.rawQuery("", null); } 。我在第13行设置了一个断点并进行调试。它说我的数据库为空。我叫Summary page方法dbAccess并抓住数据库“Donation_details”。它应该显示数据......

getData

我想我在这里和那里都错过了什么。但我找不到它,或者我输入错误的东西导致数据库为空?我可以提供一些指导吗?预先感谢...

java android android-sqlite
2个回答
0
投票

解:

写这个

ListView listView;
    ArrayList<Model> mList;
    RecordListAdapter mAdapter = null;
    dbAccess myDb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_summary__page);

        this.listView = findViewById(R.id.listView);
        mList = new ArrayList<>();
        mAdapter = new RecordListAdapter(this,R.layout.row,mList);
        listView.setAdapter(mAdapter);
        Cursor cursor = myDb.getData("Select * from Donation_Details");
        mList.clear();
        while(cursor.moveToNext()){
            int id = cursor.getInt(0);
            String txnno = cursor.getString(1);
            String name = cursor.getString(2);
            String txndate = cursor.getString(3);
            BigDecimal amount = BigDecimal.valueOf(cursor.getDouble(4));
            String description1 = cursor.getString(5);
            String createddate = cursor.getString(7);

            mList.add(new Model(id,txnno,name,txndate,amount,description1,createddate));
        }

在你的onCreate()之后的行myDb = new dbAccess(this);

试试吧..


1
投票

你需要初始化'dbAccess myDb'

© www.soinside.com 2019 - 2024. All rights reserved.