刚接触android,现在有一个关于用SimpleCursorAdapter来对listview进行数据绑定的问题。
在onCreate函数里面有{
mydatabase = new MyDataBase(this);
mydatabase.open();
}
一个buttonlistener
buttonsearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
UpdataAdapter();
}
});
数据查询与绑定
public void UpdataAdapter(){
Cursor cur = mydatabase.searchAll();
while(cur.moveToNext()){
Log.d("NAME____DDD",cur.getString(cur.getColumnIndex(MyDataBase.KEY_NAME)));
Log.d("NUM____DDD",cur.getString(cur.getColumnIndex(MyDataBase.KEY_NUM)));
}
if(cur !=null && cur.getCount() >0){
ListAdapter adapter = new SimpleCursorAdapter(this,R.layout.listview,cur, new String[]{MyDataBase.KEY_NUM,MyDataBase.KEY_NAME,MyDataBase.KEY_ID},
new int[]{R.id.num1,R.id.name1,R.id.hid});
lv.setAdapter(adapter);
}
// if(!cur.isClosed()){ ---------①
// cur.close();
// }
}
如果①的语句注释掉,listview会有数据显示。一切正常。
现在问题是如果把①后的三行语句没有注释掉,listview就不会有数据显示出来,但上面的log里面是有数据输出的。
求大神告诉我为什么啊。。
在onCreate函数里面有{
mydatabase = new MyDataBase(this);
mydatabase.open();
}
一个buttonlistener
buttonsearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
UpdataAdapter();
}
});
数据查询与绑定
public void UpdataAdapter(){
Cursor cur = mydatabase.searchAll();
while(cur.moveToNext()){
Log.d("NAME____DDD",cur.getString(cur.getColumnIndex(MyDataBase.KEY_NAME)));
Log.d("NUM____DDD",cur.getString(cur.getColumnIndex(MyDataBase.KEY_NUM)));
}
if(cur !=null && cur.getCount() >0){
ListAdapter adapter = new SimpleCursorAdapter(this,R.layout.listview,cur, new String[]{MyDataBase.KEY_NUM,MyDataBase.KEY_NAME,MyDataBase.KEY_ID},
new int[]{R.id.num1,R.id.name1,R.id.hid});
lv.setAdapter(adapter);
}
// if(!cur.isClosed()){ ---------①
// cur.close();
// }
}
如果①的语句注释掉,listview会有数据显示。一切正常。
现在问题是如果把①后的三行语句没有注释掉,listview就不会有数据显示出来,但上面的log里面是有数据输出的。
求大神告诉我为什么啊。。
这个cursor在界面onCreate时候构建,那么我只要关注界面销毁时候是不是关闭就行了。其他用的时候不必关闭,否则要重建。
另外,像cursorAdapter这样传进来了cursor它有自己的生命周期,有adapter去回收,我们放心用就好了啊。
是这样啊。。主要现在就是在我连续点查询那个按钮的时候log里面会包cursor没有关闭这个错。所以就想看看能不能在每次查询之后把他给关掉。