Android 无法访问查询
I get db无法在此类中重新加载错误。在displayListView()函数中。谁能帮我解决这个问题。谢谢 这里有密码吗 公共类PrepSqlitedActivity扩展了活动{Android 无法访问查询,android,Android,I get db无法在此类中重新加载错误。在displayListView()函数中。谁能帮我解决这个问题。谢谢 这里有密码吗 公共类PrepSqlitedActivity扩展了活动{ // private static final String DB_NAME = "hymnals"; //A good practice is to define database field names as constants private SimpleCursorAdapter dataAda
// private static final String DB_NAME = "hymnals";
//A good practice is to define database field names as constants
private SimpleCursorAdapter dataAdapter;
private Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Our key helper
ExternalDbOpenHelper repo = ExternalDbOpenHelper.getInstance( context );
SQLiteDatabase db = repo.getWritableDatabase();
displayListView();
}
private void displayListView() {
//all hymns are fetched
*final Cursor cursor = db.fetchAllHymns();*
// The desired columns to be bound
String[] columns = new String[] {
ExternalDbOpenHelper.HYMN_ID,
ExternalDbOpenHelper.HYMN_NAME,
};
// the XML defined views which the data will be bound to
int[] to = new int[] {
R.id.tVid,
R.id.name,
};
// create the adapter using the cursor pointing to the desired data
//as well as the layout information
dataAdapter = new SimpleCursorAdapter(
this, R.layout.activity_main,
cursor,
columns,
to,
0);
ListView listView = (ListView) findViewById(R.id.list);
// Assign adapter to ListView
listView.setAdapter(dataAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View view,
int position, long id) {
// Get the cursor, positioned to the corresponding row in the result set
Cursor cursor = (Cursor) listView.getItemAtPosition(position);
// Get the state's capital from this row in the database.
}
});
}
}
//私有静态最终字符串DB_NAME=“hymnals”;
//一个好的做法是将数据库字段名定义为常量
私有SimpleCursorAdapter数据适配器;
私人语境;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//我们的主要助手
ExternalDbOpenHelper repo=ExternalDbOpenHelper.getInstance(上下文);
SQLiteDatabase db=repo.getWritableDatabase();
displayListView();
}
私有void displayListView(){
//所有的赞美诗都被取来了
*最终游标=db.fetchallhyms()*
//要绑定的所需列
字符串[]列=新字符串[]{
ExternalDbOpenHelper.hymm_ID,
ExternalDbOpenHelper.hymm_名称,
};
//数据将绑定到的XML定义的视图
int[]至=新int[]{
R.id.tVid,
R.id.name,
};
//使用指向所需数据的光标创建适配器
//以及布局信息
dataAdapter=新的SimpleCorsorAdapter(
这个,R.layout.activity_main,
光标,
柱,
到
0);
ListView ListView=(ListView)findViewById(R.id.list);
//将适配器分配给ListView
setAdapter(dataAdapter);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView列表视图、视图、,
内部位置,长id){
//获取光标,定位到结果集中的对应行
游标游标=(游标)listView.getItemAtPosition(位置);
//从数据库中的此行获取州的资本。
}
});
}
}
变量db
是onCreate
方法中的局部变量。请改用实例变量:
class /* ... */ {
private SQLiteDatabase db;
/* ... */
@Override
public void onCreate(Bundle savedInstanceState) {
/* ... */
db = repo.getWritableDatabase();
/* ... */
}
/* ... */
}
但现在类型的fetchAllHymns()未定义SQLIteDatabase@Azeem
fetchallhyms
是您的创作。方法fetchallhyms
不是Android框架的一部分,所以我真的想知道它是否可用。根据你的另一个问题,我猜你想要repo
作为实例变量,并且它支持该方法。