此代码中缺少什么?它只向我显示数据库中的第一条记录,但不会移动到下一条记录。
if (v.getId() == R.id.btnNext) {
try {
pos++;
database.Open();
Houes h = new Houes();
database.Shows(h, pos);
txNo.setText("" + h.getHouse_id());
txAdd.setText("" + h.getHouse_address());
txOn.setText("" + h.getHouse_owner());
txVal.setText("" + h.getHouse_value());
txDis.setText("" + h.getHouse_discount());
database.Close();
} catch (Exception e) {
}
protected void Shows(Houes house , int p ) {
// String[] columns = {house_id, house_address, house_owner, house_value, house_discount};
Cursor c = db.rawQuery("select * from " + database_table, null);
int iRow = c.getColumnIndex(house_id);
int iAdd = c.getColumnIndex(house_address);
int iOwn = c.getColumnIndex(house_owner);
int iVal = c.getColumnIndex(house_value);
int iDis = c.getColumnIndex(house_discount);
if(p==1){
c.moveToFirst();
}else if(p>1&&c.isAfterLast()==false){
c.moveToNext();
}
house.setHouse_id(c.getInt(iRow));
house.setHouse_address(c.getString(iAdd));
house.setHouse_owner(c.getString(iOwn));
house.setHouse_value(c.getInt(iVal));
house.setHouse_discount(c.getInt(iDis));
}
答案 0 :(得分:0)
更改显示以返回它提取的光标,例如
Cursor Shows() {
return Cursor c = db.rawQuery("select * from " + database_table, null);
}
在下一个按钮点击监听器之前和之外调用显示方法,并在以下内容之后显示第一个房屋值: -
cursor = db.shows();
if (cursor.moveToFirst()) {
int iRow = c.getColumnIndex(house_id); //etc
} else {
//handle no houses to show
}
......
在你的下一个按钮监听器
中 if (cursor.moveToNext) {
//do you stuff here
} else {
//handle end of rows here
}
上一个按钮侦听器基本相同,但使用moveToPrevious
。
如果你需要定位到一个特定的房子,那么在它返回后循环移动光标,即只需从节目移动现有代码。
确保在访问光标后执行cursor.close();
。