【发布时间】:2015-07-22 05:05:59
【问题描述】:
我想从存储在 sqlite 数据库中的数据填充可扩展列表视图。
数据库助手
public class databasehelperhome extends SQLiteOpenHelper
{
static String DATABASE_NAME="SYSTECH_home.DB";
public static final String TABLE_NAME="Sites";
public static final String TABLE_NAME1="Days";
public static final String KEY_ID="KEY_ID";
public static final String SITE_NAME="Site_Name";
public static final String DAY_NAME="Day_Name";
private SQLiteDatabase mDb;
public databasehelperhome(Context context)
{
super(context, DATABASE_NAME, null,1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+" ("+KEY_ID+" INTEGER PRIMARY KEY, "+SITE_NAME+" TEXT, "+DAY_NAME+" TEXT)";
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
public Cursor fetchGroup() {
String query = "SELECT * FROM Sites";
return mDb.rawQuery(query, null);
}
public Cursor fetchChildren(String Site_Name) {
String query = "SELECT * FROM Sites WHERE KEY_ID = '" + Site_Name + "'";
return mDb.rawQuery(query, null);
}
}
我的活动
private void fillData() {
Cursor mGroupsCursor;
mGroupsCursor = mHelper.fetchGroup();
startManagingCursor(mGroupsCursor);
mGroupsCursor.moveToFirst();
ExpandableListView elv = (ExpandableListView) findViewById(android.R.id.list);
madapter = new MyExpandableListAdapter(mGroupsCursor, Home.this,
R.layout.list_group, // Your row layout for a group
R.layout.list_item, // Your row layout for a child
new String[] { "Site_Name" }, // Field(s) to use from group cursor
new int[] { R.id.lblListHeader }, // Widget ids to put group data into
new String[] { "Day_Name" }, // Field(s) to use from child cursors
new int[] { R.id.lblListItem }); // Widget ids to put child data into
elv.setAdapter(madapter); // set the list adapter.
}
public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {
public MyExpandableListAdapter(Cursor cursor, Context context,int groupLayout,
int childLayout, String[] groupFrom, int[] groupTo, String[] childrenFrom,
int[] childrenTo) {
super(context, cursor, groupLayout, groupFrom, groupTo,
childLayout, childrenFrom, childrenTo);
}
@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
Cursor childCursor = mHelper.fetchChildren(groupCursor.getString(groupCursor.getColumnIndex("id_room")));
startManagingCursor(childCursor);
childCursor.moveToFirst();
return childCursor;
}
}
我得到的错误是这里的空指针异常 return mDb.rawQuery(query, null);
我关注了这个链接Android ExpandableListView and SQLite Database
请帮帮我。
【问题讨论】:
-
mDb从未被分配。 -
@Nija private SQLiteDatabase mDb;被分配写
-
@Nija 首先我只是想知道我走的路是否正确
-
mDb 为 null,因此您需要在自定义 SQLiteOpenHelper 构造函数中对其进行初始化
标签: android sqlite expandablelistview