在Android中单击我的列表适配器以显示我的数据库中的数据后,我得到一个光标超出范围异常。
这是我单击按钮时执行的代码:
@Override
public void onCreate(Bundle contactsState) {
super.onCreate(contactsState);
// Set the layout for this activity
setContentView(R.layout.contacts);
final Intent openInfo = new Intent(this,contactInfo.class);
final database info = new database(this);
info.open();
getData = info.getData();
getData.moveToFirst();
ListAdapter Cview = new SimpleCursorAdapter(this,
R.layout.row,
getData,
new String[]{info.KEY_CONTACT, info.KEY_PHONE},
new int[]{R.id.RowText});
setListAdapter(Cview);
ListView Vct;
Vct = getListView();
Vct.setClickable(true);
Vct.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> a,View v,int position,long id){
Click = (Cursor) a.getItemAtPosition(position);
getId = Click.getLong(1);
info.open();
String Pdata = info.getRows(getId);
openInfo.putExtra("data",Pdata);
info.close();
//Start the Activity
startActivity(openInfo);
}
});
info.close();
}
这是我的数据库中管理其中一些代码的部分:
public Cursor getData() {
// TODO Auto-generated method stub
String[] columns = new String[]{ KEY_ROWID, KEY_CONTACT, KEY_PHONE, KEY_DAYS};
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
return c;
}
public String getRows(long id) {
// TODO Auto-generated method stub
String[] columns = new String[]{KEY_ROWID,KEY_CONTACT,KEY_PHONE,KEY_DAYS};
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + id, null, null, null, null);
String value = c.getString(1) + "\n" + c.getString(2) + "\n" + c.getString(3);
return value;
}
这是我得到的错误:
http://paste.ubuntu.com/1000856/
这应该做的是,当您单击列表视图中的名称时,如果其中包含来自数据库的数据,它将打开一个新活动,该活动具有传递给它的变量,并且该变量将在活动中显示信息名字。
Thanks in Advance